ホームページ  >  記事  >  バックエンド開発  >  Laravel 5のウェアハウスモード

Laravel 5のウェアハウスモード

PHPz
PHPzオリジナル
2023-08-28 15:13:021376ブラウズ

Laravel 5中的仓储模式

リポジトリ パターンは、Eric Evans の著書『ドメイン駆動設計』で初めて紹介されました。 実際、リポジトリは applicationdomain 層へのエントリ ポイントです。

簡単に言えば、リポジトリを使用すると、オブジェクトがどのように永続化されるかを知らなくても、すべてのコードでオブジェクトを使用できるようになります。リポジトリには、テーブルからオブジェクトへのマッピングを含む、永続性に関するすべての知識が含まれています。これにより、永続化レイヤーのよりオブジェクト指向のビューが提供され、マッピング コードがよりカプセル化されます。

Laravel でリポジトリを (実際のリポジトリとして - Eric Evans Domain Driven Design Book) 動作させる唯一の方法は、デフォルトの ORM をアクティブ レコードからデータ マッパーに変更することです。最良の代替物は教義です。

教義ORM

Doctrine は、データ マッパー パターンを実装する ORM (オブジェクト リレーショナル マッピング) で、アプリケーションのビジネス ルールをデータベースの永続層から完全に分離できます。 Doctrine は SQL ではなく DQL を使用します。 DQL はオブジェクト クエリ言語を提供します。つまり、従来のリレーショナル クエリ用語ではなくオブジェクト用語を使用してクエリを実行します。

これを使用すると、オブジェクト指向の方法でデータベース クエリを作成でき、デフォルトのリポジトリ メソッドでは不可能な方法でデータベースにクエリを実行する必要がある場合に役立ちます。私の意見では、DQL はデータベースへの接続を維持するための最も強力な方法です。

教義と雄弁

Doctrine エンティティは、ORM 継承のオーバーヘッドを追加しない、単なる通常の PHP 単純クラスです。 Doctrine は同じ継承を使用して、データベースにアクセスせずに複数のクエリリクエストを管理します。これは、エンティティオブジェクトがリクエスト全体に存在することを意味します。

Doctrine のもう 1 つの優れた機能は、ファイルを移行してデータベース スキーマを作成するのではなく、エンティティ アノテーションのメタデータを反映するデータベースが自動的に作成されることです。一方、Eloquent はそれほど複雑ではなく、非常に使いやすいです。

これら 2 つを完全に比較するには、別の記事が必要になります。ご覧のとおり、Doctrine オブジェクトはより軽く、より抽象的です。ただし、Doctrine は特定のプロジェクトにのみ適しているため、オーバーヘッドが発生する場合があります。アプリケーションに最適な ORM を選択するのはプログラマ次第だと思います。

ブログアプリケーション

Laravel を使用してブログ アプリケーションを作成します。まず、教義を確立する必要があります。 Laravel 5 の既存の構成に一致するブリッジがあります。 Laravel プロジェクトに Doctrine 2 をインストールするには、次のコマンドを実行します:

リーリー

いつものように、このパッケージはサービスプロバイダーとして app/config.php に追加する必要があります:

リーリー

エイリアスも設定する必要があります:

リーリー

最後に、パッケージ構成を公開します:

リーリー

これで完了です。

エンティティはアプリケーションの重要な部分です App\Entities\Post.php:

リーリー

次に、前に説明した リポジトリ を作成します。 アプリ/リポジトリ/PostRepo.php :

リーリー

コントローラー: App/Http/Controllers/PostController.php :

リーリー

ご覧のとおり、私はメッセージの管理に Flash Assistant を使用しています (Laravel を使用することもできます)。バリデーターに関しては、好みに応じて、(私がやったように) 独自に作成することも、Laravel のデフォルトを使用することもできることを付け加えておきます。

ファイルの表示は通常と同じです。このビューの例では、ファイルは resources/views/admin/edit.blade.php :

のようになります。 ああああ

以上がLaravel 5のウェアハウスモードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。