{"id":35599,"date":"2022-05-21T07:57:30","date_gmt":"2022-05-21T07:57:30","guid":{"rendered":"https:\/\/quera.org\/blog\/?p=35599"},"modified":"2024-02-04T15:57:16","modified_gmt":"2024-02-04T12:27:16","slug":"repository-design-pattern","status":"publish","type":"post","link":"https:\/\/quera.org\/blog\/repository-design-pattern\/","title":{"rendered":"\u0627\u0644\u06af\u0648\u06cc \u0637\u0631\u0627\u062d\u06cc Repository"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0627\u0646 \u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc\u200c\u062f\u0627\u0646\u06cc\u062f\u060c \u0627\u0644\u06af\u0648\u0647\u0627 \u0631\u0627\u0647\u200c\u062d\u0644\u200c\u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0645\u0634\u06a9\u0644\u0627\u062a \u0631\u0627\u06cc\u062c \u062f\u0631 \u0637\u0631\u0627\u062d\u06cc \u0634\u06cc\u0621\u06af\u0631\u0627 \u0647\u0633\u062a\u0646\u062f. \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u0645 \u062a\u0627 \u0628\u0647 \u0628\u0631\u0631\u0633\u06cc <strong>\u0627\u0644\u06af\u0648\u06cc \u0637\u0631\u0627\u062d\u06cc Repository<\/strong> \u0628\u067e\u0631\u062f\u0627\u0632\u06cc\u0645.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0627\u0644\u06af\u0648\u06cc \u0637\u0631\u0627\u062d\u06cc Repository<\/strong>\u060c \u06cc\u06a9\u06cc \u0627\u0632 \u0627\u0644\u06af\u0648\u200c\u0647\u0627\u06cc \u067e\u0631\u06a9\u0627\u0631\u0628\u0631\u062f \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0627\u0633\u062a \u0648 \u0647\u0645\u0627\u0646 \u0637\u0648\u0631 \u06a9\u0647 \u0627\u0632 \u0627\u0633\u0645\u0634 \u067e\u06cc\u062f\u0627\u0633\u062a\u060c \u06cc\u06a9 \u0627\u0644\u06af\u0648\u06cc \u0637\u0631\u0627\u062d\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0645\u062e\u0627\u0632\u0646\u06cc \u0648\u0627\u0633\u0637 \u0628\u06cc\u0646 \u0645\u0646\u0637\u0642 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0646\u062f. \u0627\u06cc\u0646 \u0645\u062e\u0627\u0632\u0646 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627\u06cc\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 (\u0630\u062e\u06cc\u0631\u0647\u060c \u062f\u0631\u06cc\u0627\u0641\u062a \u0648\u2026) \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0648\u0628 \u0627\u0633\u062a \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0627\u0635\u0644 <a dideo-checked=\"true\" class=\"global-rtl\" href=\"https:\/\/en.wikipedia.org\/wiki\/Separation_of_concerns\" target=\"_blank\" rel=\"noopener\">\u062c\u062f\u0627\u0633\u0627\u0632\u06cc \u0631\u0641\u062a\u0627\u0631\u200c\u0647\u0627 (\u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627)<\/a> (Sepration of Concerns \u06cc\u0627 SOC) \u06cc\u0627 \u0647\u0645\u0627\u0646 \u0645\u0627\u0698\u0648\u0644\u0627\u0631\u06cc\u062a\u06cc \u062f\u0631 \u0645\u0647\u0646\u062f\u0633\u06cc \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u0646\u06cc\u0632 \u0645\u0637\u0631\u062d \u0634\u0648\u062f. \u0637\u0628\u0642 \u0627\u06cc\u0646 \u0627\u0635\u0644\u060c \u0645\u0646\u0637\u0642 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0628\u062e\u0634\u200c\u0647\u0627\u06cc \u06a9\u0648\u0686\u06a9 \u06a9\u0647 \u0647\u0631\u06a9\u062f\u0627\u0645 \u0642\u0627\u0628\u0644\u06cc\u062a\u06cc \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u062f\u0646\u0638\u0631\u0645\u0627\u0646 \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u060c \u062a\u0642\u0633\u06cc\u0645 \u0634\u0648\u062f. \u0637\u0628\u0642 \u062a\u0639\u0631\u06cc\u0641 \u06af\u0641\u062a\u0647\u200c\u0634\u062f\u0647 \u0627\u0632 <strong>\u0627\u0644\u06af\u0648\u06cc \u0637\u0631\u0627\u062d\u06cc Repository<\/strong>\u060c \u0648\u0627\u0636\u062d \u0627\u0633\u062a \u06a9\u0647 \u0627\u06cc\u0646 \u0627\u0644\u06af\u0648 \u0628\u0647\u200c\u062e\u0648\u0628\u06cc \u0627\u0632 \u0627\u0635\u0644 \u062c\u062f\u0627\u0633\u0627\u0632\u06cc \u0631\u0641\u062a\u0627\u0631\u200c\u0647\u0627 \u062a\u0628\u0639\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647\u200c\u0637\u0648\u0631 \u06a9\u0644\u06cc \u0627\u06cc\u0646 \u0627\u0644\u06af\u0648 \u0633\u0627\u062e\u062a\u0627\u0631\u06cc \u0645\u0634\u0627\u0628\u0647 \u0632\u06cc\u0631 \u062f\u0627\u0631\u062f:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"473\" height=\"520\" src=\"https:\/\/quera.org\/blog\/wp-content\/uploads\/2022\/05\/repo.png\" alt=\"\" class=\"wp-image-35601\" srcset=\"https:\/\/quera.org\/blog\/wp-content\/uploads\/2022\/05\/repo.png 473w, https:\/\/quera.org\/blog\/wp-content\/uploads\/2022\/05\/repo-273x300.png 273w\" sizes=\"auto, (max-width: 473px) 100vw, 473px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0627\u0646 \u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u062a\u0635\u0648\u06cc\u0631 \u0647\u0645 \u0645\u0634\u062e\u0635 \u0627\u0633\u062a\u060c \u0628\u062f\u0648\u0646 Repository \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0627\u0632 \u06a9\u0646\u062a\u0631\u0644\u0631 \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u062f\u0627\u062f\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u0648\u0644\u06cc \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Repository \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u062a\u0648\u0633\u0637 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627\u06cc Repository \u0635\u0648\u0631\u062a \u0645\u06cc\u200c\u067e\u0630\u06cc\u0631\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0628\u0647 \u0628\u0631\u0631\u0633\u06cc \u06cc\u06a9 \u0645\u062b\u0627\u0644 \u0639\u0645\u0644\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0627\u0644\u06af\u0648 \u062f\u0631 \u0632\u0628\u0627\u0646 PHP \u0648 \u0641\u0631\u06cc\u0645\u200c\u0648\u0631\u06a9 Laravel \u062e\u0648\u0627\u0647\u06cc\u0645 \u067e\u0631\u062f\u0627\u062e\u062a. \u0639\u0644\u062a \u0627\u0646\u062a\u062e\u0627\u0628 \u0627\u06cc\u0646 \u0641\u0631\u06cc\u0645\u200c\u0648\u0631\u06a9 \u0631\u0627 \u0646\u06cc\u0632 \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0628\u0631\u0631\u0633\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0628\u06cc\u0634\u062a\u0631 \u0628\u062e\u0648\u0627\u0646\u06cc\u062f:<a href=\"https:\/\/quera.org\/blog\/what-is-design-pattern\/\"> \u062f\u06cc\u0632\u0627\u06cc\u0646 \u067e\u062a\u0631\u0646 \u0686\u06cc\u0633\u062a \u061f \u2013 \u0647\u0631\u0686\u0647 \u0628\u0627\u06cc\u062f \u062f\u0631\u0645\u0648\u0631\u062f \u0627\u0644\u06af\u0648\u06cc \u0637\u0631\u0627\u062d\u06cc (Design Pattern) \u0628\u062f\u0627\u0646\u06cc\u062f<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-\u06cc\u06a9-\u0645\u062b\u0627\u0644-\u0639\u0645\u0644\u06cc-\u0627\u0632-\u0627\u0644\u06af\u0648\u06cc-\u0637\u0631\u0627\u062d\u06cc-repository\" style=\"font-size:18px\">\u06cc\u06a9 <strong>\u0645\u062b\u0627\u0644 \u0639\u0645\u0644\u06cc \u0627\u0632 \u0627\u0644\u06af\u0648\u06cc \u0637\u0631\u0627\u062d\u06cc Repository<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0627\u0646 \u0637\u0648\u0631 \u06a9\u0647 \u06af\u0641\u062a\u0647 \u0634\u062f\u060c \u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644 \u0639\u0645\u0644\u06cc <strong>\u0627\u0644\u06af\u0648\u06cc \u0637\u0631\u0627\u062d\u06cc Repository<\/strong> \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0627\u0632 \u0641\u0631\u06cc\u0645\u200c\u0648\u0631\u06a9 \u0644\u0627\u0631\u0627\u0648\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f. \u0639\u0644\u062a \u0627\u0646\u062a\u062e\u0627\u0628 \u0627\u06cc\u0646 \u0641\u0631\u06cc\u0645\u200c\u0648\u0631\u06a9 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0644\u0627\u0631\u0627\u0648\u0644 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0627\u0632 \u0627\u0644\u06af\u0648\u06cc Active Record \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0627\u0644\u06af\u0648 \u0628\u0647\u200c\u0637\u0648\u0631 \u06a9\u0644\u06cc \u0645\u0646\u0637\u0642 \u062a\u0645\u0627\u0645 \u0645\u0648\u0627\u0631\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0627\u062f\u0647 \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0645\u062a\u0645\u0631\u06a9\u0632 \u062f\u0631 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u062f \u0648 \u0645\u0627 \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u0645 \u062a\u0627 \u0628\u0627 <strong>\u0627\u0644\u06af\u0648\u06cc \u0637\u0631\u0627\u062d\u06cc Repository<\/strong> \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0622\u0646 \u0631\u0627 \u062c\u062f\u0627 \u06a9\u0646\u06cc\u0645. \u062f\u0631 \u0627\u062f\u0627\u0645\u0647\u060c \u0646\u0645\u0648\u0646\u0647\u200c\u06cc \u0633\u0627\u062f\u0647\u200c\u0627\u06cc \u0627\u0632 \u0627\u0644\u06af\u0648\u06cc Repository \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0641\u0631\u06cc\u0645\u200c\u0648\u0631\u06a9 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f \u0633\u0627\u062e\u062a\u0627\u0631 \u0641\u0627\u06cc\u0644\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u062a\u0634\u06a9\u06cc\u0644 \u062f\u0647\u06cc\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">app\n\u251c\u2500\u2500 Repository\n\u2502   \u251c\u2500\u2500 Eloquent\n\u2502   \u2502   \u251c\u2500\u2500 BaseRepository.php\n\u2502   \u2502   \u2514\u2500\u2500 UserRepository.php\n\u251c\u2500\u2500 EloquentRepositoryInterface.php\n\u2514\u2500\u2500 UserRepositoryInterface.php<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0627\u0646 \u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u062f \u0645\u0627 \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u0645 \u062a\u0627 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633\u200c\u0647\u0627\u06cc\u06cc \u0628\u0633\u0627\u0632\u06cc\u0645 \u0648 \u0628\u0627 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627\u06cc\u06cc \u0628\u0647 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0627\u06cc\u0646 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633\u200c\u0647\u0627 \u0628\u067e\u0631\u062f\u0627\u0632\u06cc\u0645. BaseRepository \u0645\u062e\u0632\u0646\u06cc \u0627\u0633\u062a \u0634\u0627\u0645\u0644 \u062a\u0645\u0627\u0645 \u0645\u062a\u062f\u200c\u0647\u0627\u06cc \u0645\u0634\u062a\u0631\u06a9 \u062f\u0631 \u0645\u062e\u0627\u0632\u0646 \u0645\u062e\u062a\u0644\u0641 \u06a9\u0647 EloquentRepositoryInterface \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">&lt;?php\nnamespace App\\Repository;\nuse Illuminate\\Database\\Eloquent\\Model;\ninterface EloquentRepositoryInterface\n{\n   public function create(array $attributes): Model;\n\n   public function find($id): ?Model;\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">&lt;?php   \nnamespace App\\Repository\\Eloquent;   \nuse App\\Repository\\EloquentRepositoryInterface; \nuse Illuminate\\Database\\Eloquent\\Model;   \nclass BaseRepository implements EloquentRepositoryInterface \n{        \n    protected $model;       \n    \n    public function __construct(Model $model)     \n    {         \n        $this-&gt;model = $model;\n    }\n\n    public function create(array $attributes): Model\n    {\n        return $this-&gt;model-&gt;create($attributes);\n    }\n\n    public function find($id): ?Model\n    {\n        return $this-&gt;model-&gt;find($id);\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644 \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0627 \u06a9\u0627\u0645\u0644 \u06a9\u0646\u06cc\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">&lt;?php\nnamespace App\\Repository;\nuse App\\Model\\User;\nuse Illuminate\\Support\\Collection;\ninterface UserRepositoryInterface\n{\n   public function all(): Collection;\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">&lt;?php\nnamespace App\\Repository\\Eloquent;\nuse App\\Model\\User;\nuse App\\Repository\\UserRepositoryInterface;\nuse Illuminate\\Support\\Collection;\nclass UserRepository extends BaseRepository implements UserRepositoryInterface\n{\n   public function __construct(User $model)\n   {\n       parent::__construct($model);\n   }\n\n   public function all(): Collection\n   {\n       return $this-&gt;model-&gt;all();    \n   }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0627\u0636\u062d \u0627\u0633\u062a \u06a9\u0647 \u0628\u0627 \u06a9\u0627\u0645\u0644 \u0634\u062f\u0646 \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627\u060c \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0627\u062f\u0647\u200c\u06cc \u0645\u062e\u062a\u0644\u0641 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u06cc \u0645\u0648\u0631\u062f\u0646\u0638\u0631\u0645\u0627\u0646 \u0628\u062f\u0648\u0646 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0628\u0647 \u0633\u0627\u06cc\u0631 \u0642\u0633\u0645\u062a\u200c\u0647\u0627 \u062a\u06a9\u0645\u06cc\u0644 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u06af\u0627\u0645 \u0622\u062e\u0631 \u0628\u0627\u06cc\u062f \u0644\u0627\u0631\u0627\u0648\u0644 \u0631\u0627 \u0627\u0632 \u0648\u062c\u0648\u062f \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627 \u0645\u0637\u0644\u0639 \u06a9\u0646\u06cc\u0645. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 \u0633\u0631\u0648\u06cc\u0633 \u067e\u0631\u0648\u0627\u06cc\u062f\u0631\u200c\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">php artisan make:provider RepositoryServiceProvider<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648 \u0628\u0639\u062f \u0627\u0632 \u0631\u062c\u06cc\u0633\u062a\u0631 \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 \u067e\u0631\u0648\u0627\u06cc\u062f\u0631:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">&lt;?php \nnamespace App\\Providers; \nuse App\\Repository\\EloquentRepositoryInterface; \nuse App\\Repository\\UserRepositoryInterface; \nuse App\\Repository\\Eloquent\\UserRepository; \nuse App\\Repository\\Eloquent\\BaseRepository; \nuse Illuminate\\Support\\ServiceProvider; \nclass RepositoryServiceProvider extends ServiceProvider \n{ \n   public function register() \n   { \n       $this-&gt;app-&gt;bind(EloquentRepositoryInterface::class, BaseRepository::class);\n       $this-&gt;app-&gt;bind(UserRepositoryInterface::class, UserRepository::class);\n   }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u0627\u0632 \u0627\u06cc\u0646 \u0645\u062e\u0627\u0632\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">class UsersController extends Controller\n{\n   private $userRepository;\n  \n   public function __construct(UserRepositoryInterface $userRepository)\n   {\n       $this-&gt;userRepository = $userRepository;\n   }\n\n   public function index()\n   {\n       $users = $this-&gt;userRepository-&gt;all();\n\n       return view('users.index', [\n           'users' =&gt; $users\n       ]);\n   }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0627\u0646\u200c\u0637\u0648\u0631 \u06a9\u0647 \u06af\u0641\u062a\u0647 \u0634\u062f\u060c \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644 \u0634\u06a9\u0644 \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647\u200c\u0627\u06cc \u0627\u0632 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc <strong>\u0627\u0644\u06af\u0648\u06cc \u0637\u0631\u0627\u062d\u06cc Repository<\/strong> \u0628\u0648\u062f\u060c \u0627\u0645\u0627 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0628\u0632\u0631\u06af \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u0635\u0646\u0639\u062a\u060c \u0627\u06cc\u0646 \u0627\u0644\u06af\u0648 \u06a9\u0645\u06a9\u200c \u0634\u0627\u06cc\u0627\u0646\u06cc \u062f\u0631 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0628\u0631\u0648\u0632 \u06a9\u062f\u200c\u0647\u0627\u06cc \u062a\u06a9\u0631\u0627\u0631\u06cc\u060c \u0627\u0645\u06a9\u0627\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f (Reusability) \u0648\u2026 \u0628\u0647 \u0634\u0645\u0627 \u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0648\u0628 \u0627\u0633\u062a \u062f\u0631 \u0627\u0646\u062a\u0647\u0627 \u0645\u062b\u0627\u0644\u06cc \u06a9\u0648\u062a\u0627\u0647 \u0627\u0632 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0627\u0644\u06af\u0648 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0633\u0641\u0627\u0631\u0634\u0627\u062a \u0628\u0628\u06cc\u0646\u06cc\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">interface OrderRepositoryInterface \n{\n    public function getAllOrders();\n    public function getOrderById($orderId);\n    public function deleteOrder($orderId);\n    public function createOrder(array $orderDetails);\n    public function updateOrder($orderId, array $newDetails);\n    public function getFulfilledOrders();\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">class OrderRepository implements OrderRepositoryInterface \n{\n    public function getAllOrders() \n    {\n        return Order::all();\n    }\n\n    public function getOrderById($orderId) \n    {\n        return Order::findOrFail($orderId);\n    }\n\n    public function deleteOrder($orderId) \n    {\n        Order::destroy($orderId);\n    }\n\n    public function createOrder(array $orderDetails) \n    {\n        return Order::create($orderDetails);\n    }\n\n    public function updateOrder($orderId, array $newDetails) \n    {\n        return Order::whereId($orderId)-&gt;update($newDetails);\n    }\n\n    public function getFulfilledOrders() \n    {\n        return Order::where('is_fulfilled', true);\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c <strong>\u0627\u0644\u06af\u0648\u06cc \u0637\u0631\u0627\u062d\u06cc Repository<\/strong> \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u06a9\u0627\u0645\u0644 \u0628\u06cc\u0627\u0646 \u0634\u062f. \u0628\u0631\u0627\u06cc \u062f\u0631\u06a9 \u0628\u0647\u062a\u0631 \u0627\u06cc\u0646 \u0627\u0644\u06af\u0648 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc <a href=\"https:\/\/quera.org\/college\/land\/register\/5310\/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D9%85%D8%AD%D9%88%D8%B1-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%E2%80%8C%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%88%D8%A8-%D8%A8%D8%A7-php\/\" target=\"_blank\" rel=\"noreferrer noopener\">\u0622\u0645\u0648\u0632\u0634 \u067e\u06cc \u0627\u0686 \u067e\u06cc<\/a> \u0648 <a href=\"https:\/\/quera.org\/college\/land\/register\/7615\/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84\/\" target=\"_blank\" rel=\"noreferrer noopener\">\u0622\u0645\u0648\u0632\u0634 \u0644\u0627\u0631\u0627\u0648\u0644<\/a> \u06a9\u0648\u0626\u0631\u0627 \u06a9\u0627\u0644\u062c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0627 \u0645\u0641\u0627\u0647\u06cc\u0645 \u0634\u06cc\u0621\u06af\u0631\u0627\u06cc\u06cc \u0648 \u0627\u0635\u0648\u0644 \u0645\u062e\u062a\u0644\u0641 \u062f\u0631 \u0645\u0647\u0646\u062f\u0633\u06cc \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u0622\u0634\u0646\u0627 \u0634\u0648\u06cc\u062f.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0647\u0645\u0627\u0646 \u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc\u200c\u062f\u0627\u0646\u06cc\u062f\u060c \u0627\u0644\u06af\u0648\u0647\u0627 \u0631\u0627\u0647\u200c\u062d\u0644\u200c\u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0645\u0634\u06a9\u0644\u0627\u062a \u0631\u0627\u06cc\u062c \u062f\u0631 \u0637\u0631\u0627\u062d\u06cc \u0634\u06cc\u0621\u06af\u0631\u0627 \u0647\u0633\u062a\u0646\u062f. \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u0645 \u062a\u0627 \u0628\u0647 \u0628\u0631\u0631\u0633\u06cc&#8230;<\/p>\n","protected":false},"author":14,"featured_media":35752,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[70,46,48,65,78,298],"tags":[],"class_list":["post-35599","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","category-developer","category-technology","category-php","category-backend","category-plus"],"_links":{"self":[{"href":"https:\/\/quera.org\/blog\/wp-json\/wp\/v2\/posts\/35599","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/quera.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/quera.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/quera.org\/blog\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/quera.org\/blog\/wp-json\/wp\/v2\/comments?post=35599"}],"version-history":[{"count":21,"href":"https:\/\/quera.org\/blog\/wp-json\/wp\/v2\/posts\/35599\/revisions"}],"predecessor-version":[{"id":45417,"href":"https:\/\/quera.org\/blog\/wp-json\/wp\/v2\/posts\/35599\/revisions\/45417"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/quera.org\/blog\/wp-json\/wp\/v2\/media\/35752"}],"wp:attachment":[{"href":"https:\/\/quera.org\/blog\/wp-json\/wp\/v2\/media?parent=35599"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/quera.org\/blog\/wp-json\/wp\/v2\/categories?post=35599"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/quera.org\/blog\/wp-json\/wp\/v2\/tags?post=35599"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}