Laravel 5の契約:Twigを使用した建築の改善と実用的なアプリケーションへの深い潜水
Laravel 5は、大幅なアーキテクチャの強化を導入しました:The Contracts Package。 この記事では、この変更の背後にある理論的根拠を調査し、LaravelのブレードテンプレートエンジンをSymfony Twigに置き換え、契約の力を活用することにより、実用的なユースケースを実証します。
重要な概念:
インターフェイスとしての契約契約は、本質的に、動作を指定するインターフェイスです。 これは、インターフェイスが実装の詳細なしにメソッドシグネチャを定義するオブジェクト指向のプログラミング原則と一致します。 LaravelのIOCコンテナは、実装への結合インターフェイス(契約)を容易にします。たとえば、
別のサービスに切り替える(たとえば、ファンアウト)には、バインディングを変更する必要があります。多くのコアLaravelサービスが契約を利用し、簡単にオーバーライドできるようになりました。 たとえば、
$this->app->bind('App\Contracts\EventPusher', 'App\Services\PusherEventPusher');
契約を実装してください。
$this->app->bind('App\Contracts\EventPusher', 'App\Services\FanoutEventPusher');
Illuminate/Mail
IlluminateContractsMail
Laravelのデフォルトのテンプレートエンジンはブレードです。 この例は、契約を使用してSymfony Twigに置き換えることを示しています。
1。パッケージ定義(composer.json):
2。 [サービスプロバイダーを表示](twigviewserviceprovider.php):このプロバイダーは、Laravelのサービスコンテナ内の小枝ローダーと環境を登録します。
{ "name": "whyounes/laravel5-twig", "description": "Twig for Laravel 5", "authors": [ { "name": "RAFIE Younes", "email": "younes.rafie@gmail.com" } ], "require": { "twig/twig": "1.18.*" }, "autoload": { "psr-0": { "RAFIE\": "src/" } } }
この工場は
を実装し、小枝を使用して作成とレンダリングを表示します。
// ... (Provider code as in original example) ...
このクラスは
を実装し、小枝ビューの容器として機能し、。IlluminateContractsViewFactory
と対話します。
// ... (Factory code as in original example) ...
5。サービスプロバイダー登録(config/app.php):
TwigViewServiceProvider
登録し、デフォルトのlaravelビュープロバイダーにコメントしてください:
$this->app->bind('App\Contracts\EventPusher', 'App\Services\PusherEventPusher');
6。ルートでTwigを使用する(app/http/routes.php):
Twigテンプレートを使用できます:
$this->app->bind('App\Contracts\EventPusher', 'App\Services\FanoutEventPusher');
7。 Twig Template(Resources/Views/Home.twig):
シンプルな小枝テンプレート:
{ "name": "whyounes/laravel5-twig", "description": "Twig for Laravel 5", "authors": [ { "name": "RAFIE Younes", "email": "younes.rafie@gmail.com" } ], "require": { "twig/twig": "1.18.*" }, "autoload": { "psr-0": { "RAFIE\": "src/" } } }
結論:
Laravel 5の契約は、フレームワークを拡張およびカスタマイズするための強力なメカニズムを提供します。 BladeをTwigに置き換えると、このアーキテクチャパターンの利点が強調され、よりクリーンでテスト可能な柔軟なアプリケーションにつながります。 契約によって提供される一貫したAPIは、プロセスを簡素化し、保守性を保証します。 完全なプロジェクトは[プロジェクトへのリンク]で見つけることができます。
よくある質問(FAQ):
(元の入力のFAQセクションはすでによく書かれており、包括的です。ここに変更は必要ありません。
以上がLaravel契約を使用して、Laravel5 Twigパッケージを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。