Rumah >pembangunan bahagian belakang >tutorial php >Gunakan kontrak Laravel untuk membina pakej 5 twig Laravel
kontrak Laravel 5: menyelam mendalam ke dalam penambahbaikan seni bina dan aplikasi praktikal dengan Twig
Laravel 5 memperkenalkan peningkatan seni bina yang signifikan: pakej kontrak. Artikel ini menerangkan rasional di sebalik perubahan ini dan menunjukkan kes penggunaan praktikal dengan menggantikan enjin templat bilah Laravel dengan simfony ranting, memanfaatkan kuasa kontrak.
Konsep Utama:
Kontrak sebagai antara muka:Beralih ke perkhidmatan yang berbeza (mis., Fanout) hanya memerlukan perubahan yang mengikat:
Banyak perkhidmatan Laravel teras kini menggunakan kontrak, membolehkan mudah mengatasi. Sebagai contoh, untuk menggantikan perkhidmatan
, melaksanakan kontrak<code class="language-php">$this->app->bind('App\Contracts\EventPusher', 'App\Services\PusherEventPusher');</code>.
<code class="language-php">$this->app->bind('App\Contracts\EventPusher', 'App\Services\FanoutEventPusher');</code>Menggantikan pisau dengan ranting menggunakan kontrak:
Illuminate/Mail
IlluminateContractsMail
Enjin templat lalai Laravel adalah pisau. Contoh ini menunjukkan menggantikannya dengan simfony ranting menggunakan kontrak.
1. Definisi pakej (composer.json):
2. Lihat Penyedia Perkhidmatan (TwigViewServiceProvider.php):
Penyedia ini mendaftarkan loader dan persekitaran Twig dalam bekas perkhidmatan Laravel.<code class="language-json">{ "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/" } } }</code>
3. Lihat kilang (twigfactory.php):
Kilang ini mengimplementasikan
<code class="language-php">// ... (Provider code as in original example) ...</code>dan mengendalikan penciptaan pandangan dan rendering menggunakan ranting.
4. Lihat pelaksanaan (twigview.php):
IlluminateContractsViewFactory
<code class="language-php">// ... (Factory code as in original example) ...</code>dan bertindak sebagai bekas untuk paparan ranting, berinteraksi dengan
.
5. Pendaftaran Penyedia Perkhidmatan (config/app.php): IlluminateContractsViewView
TwigFactory
Daftar TwigViewServiceProvider
dan komen pembekal paparan Laravel lalai:
<code class="language-php">$this->app->bind('App\Contracts\EventPusher', 'App\Services\PusherEventPusher');</code>
6. Menggunakan ranting dalam laluan (app/http/routes.php):
Sekarang anda boleh menggunakan Templat Twig:
<code class="language-php">$this->app->bind('App\Contracts\EventPusher', 'App\Services\FanoutEventPusher');</code>
7. Templat Twig (Sumber/Views/Home.Twig):
templat ranting sederhana:
<code class="language-json">{ "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/" } } }</code>
Kesimpulan:
Kontrak Laravel 5 menawarkan mekanisme yang kuat untuk memperluaskan dan menyesuaikan rangka kerja. Menggantikan bilah dengan Twig menyoroti manfaat corak seni bina ini, yang membawa kepada aplikasi yang lebih bersih, lebih dapat diuji, dan fleksibel. API yang konsisten yang disediakan oleh kontrak memudahkan proses dan memastikan pemeliharaan. Projek lengkap boleh didapati di [pautan ke projek].
Soalan Lazim (Soalan Lazim):
(bahagian Soalan Lazim dari input asal sudah ditulis dengan baik dan komprehensif. Tiada perubahan diperlukan di sini.)Atas ialah kandungan terperinci Gunakan kontrak Laravel untuk membina pakej 5 twig Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!