コードをクリーンで読みやすい状態に保つには、Repository Pattern
是非常有用的。事实上,我们也不必仅仅为了使用这个特别的设计模式去使用Laravel
,然而在下面的场景下,我们将使用OOP
的框架Laravel
去展示如何使用repositories
使我们的Controller
レイヤーを使用してコードの冗長性を減らし、より分離して読みやすくします。詳しく見てみましょう。
repositories
実際に使ってみるRepositories
并不是必要的,在你的应用中你完全可以不使用这个设计模式的前提下完成绝大多数的事情,然而随着时间的推移你可能把自己陷入一个死角,比如不选择使用Repositories
会使你的应用测试很不容易,(swapping out implementations)具体的实现将会变的很复杂,下面我们看一个例子。HousesController.php
これは、Eloquent
和数据库交互,这段代码工作的很正常,但是controller
层对于Eloquent
而言将是紧耦合的。在此我们可以注入一个repository
を使用してコードの分離バージョンを作成する非常に典型的なコードです。このコードの分離バージョンにより、後続のプログラムの特定の実装が簡素化されます。
repositories
実際にrepository
パターンをすべて完成させるにはかなりの手順が必要ですが、何度か完成させると自然と習慣になります。 以下に各手順を詳しく紹介します。
Repository
フォルダーを作成まず、app
フォルダー内に独自の Repository
フォルダーapp
文件夹创建自己Repository
文件夹repositories
を作成する必要があります。次に、フォルダー内の各ファイルに対応する名前空間を設定する必要があります。
Interface
クラス 2 番目のステップは、対応するインターフェイスを作成することです。これにより、以下の例に示すように、repository
类必须要实现的相关方法,如下例所示,在此再次强调的是命名空间一定要记得加上。HouseRepositoryInterface.php
クラスが実装する必要がある関連メソッドが決まります。名前空間を追加する必要があることを再度強調します。
HouseRepositoryInterface.php
リーリー
Repository
3: 対応するを作成する
repository
类 来给我们干活了,在这个类文件中我们可以把我们的绝大多数的数据库查询都放进去,不论多么复杂。如下面的例子DbHouseRepository.php
これで、作業を実行するための
DbHouseRepository.php
4: バックエンドサービスプロバイダーを作成する
BackendServiceProvider.php
まず、いわゆるサービス提供について理解する必要があります。サービスプロバイダーのマニュアルを参照してください
provider
相关文件。
上面一段代码主要说的是,当你在controller
层使用类型提示HouseRepositoryInterface
,我们知道你将会使用DbHouseRepository
リーリー
provider
関連ファイルを保存する新しいフォルダーを作成することもできます。 Providers Array
レイヤーでタイプ ヒント HouseRepositoryInterface
を使用する場合、DbHouseRepository
を使用することがわかっていることを示しています。
providers
到app/config/app.php 中的 providers
数组里面,只需要在最后加上AppRepositoriesBackendServiceProvider::class,
を更新する
controller
。
Controller
只需要简单的调用方法代替之前的复杂的数据库调用,如下面内容:HousesController.php
を更新します
Controller
内のメソッドを呼び出すだけです: HousesController.php
これで全体のモード変換は完了です Laravel リポジトリ パターン、laravelrepository リポジトリ パターン コードをクリーンで読みやすい状態に保つには、リポジトリ パターンを使用すると非常に便利です。実際、その必要はありません... 🎜🎜