Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana fasad laravel berfungsi dan cara menggunakannya di tempat lain
Corak fasad memudahkan interaksi objek kompleks dengan menyediakan antara muka bersatu tunggal. Tutorial ini menunjukkan cara menyesuaikan pelaksanaan fasad Laravel ke kerangka lain, memanfaatkan kuasa bekas IOC.
Konsep Utama:
Facade
(rujukan kepada bekas perkhidmatan) dan kaedah Magic $app
untuk menyelesaikan dan menelefon secara dinamik pada perkhidmatan kontena.
__callStatic
Laravel's
AliasLoader
spl_autoload_register
menyesuaikan diri dengan rangka kerja lain melibatkan membuat bekas perkhidmatan, membina kelas fasad dengan antara muka statik, dan melaksanakan alias loader. Fasad Laravel menyediakan antara muka seperti statik kepada perkhidmatan kontena. Walaupun istilah "fasad" telah mencetuskan perdebatan dalam komuniti PHP mengenai kepatuhannya yang ketat terhadap corak reka bentuk, fungsinya tetap berharga.
Mengakses perkhidmatan secara langsung dari bekas melibatkan. Fasad memudahkan ini untuk
.
App::make('some_service')->methodName()
Setiap perkhidmatan mempunyai fasad yang sama memanjangkan kelas Laravel someService::methodName()
. Kaedah penting ialah
mengendalikan resolusi perkhidmatan dan kaedah yang sebenar. Facade
getFacadeAccessor()
__callStatic
kelas Laravel
Facade
Kelas memegang rujukan kontena (
. Apabila kaedah statik dipanggil pada fasad, Facade
mengambil semula perkhidmatan dan melaksanakan kaedah yang diminta. Kaedah $app
digunakan untuk pengambilan perkhidmatan ini. Versi mudah __callStatic
ditunjukkan di bawah: __callStatic
getFacadeRoot()
__callStatic
<code class="language-php">public static function __callStatic($method, $args) { $instance = static::getFacadeRoot(); return call_user_func_array([$instance, $method], $args); }</code>
kelas fasad memanjangkan asas dan melaksanakan
:
Facade
getFacadeAccessor()
<code class="language-php"><?php namespace App\Facades; use Illuminate\Support\Facades\Facade; class SomeServiceFacade extends Facade { protected static function getFacadeAccessor() { return 'some.service'; } }</code>
Laravel's config/app.php
mengandungi nama alias pemetaan 'aliases'
kepada nama kelas yang berkelayakan sepenuhnya. The AliasLoader
melangkah melalui array ini, mendaftarkan fungsi autoload untuk membuat alias menggunakan class_alias
. Ini membolehkan menggunakan nama pendek seperti FancyName
bukan AppFacadesSomeServiceFacade
.
Melaksanakan fasad dalam rangka lain (mis., Silex):
untuk menggunakan pendekatan fasad Laravel dalam Silex (atau rangka kerja lain), ikuti langkah -langkah ini:
composer require illuminate/support
Facade
dan melaksanakan getFacadeAccessor()
. IlluminateSupportFacadesFacade::setFacadeApplication($app);
AliasLoader
atau membuat kelas yang sama untuk mengendalikan alias. aliases.php
: Tentukan alias anda. AliasLoader
. Sekarang anda boleh menggunakan fasad anda dengan panggilan statik yang mudah.
Soalan Lazim (Soalan Lazim):
Seksyen FAQ yang disediakan sudah komprehensif dan berstruktur dengan baik. Tiada perubahan diperlukan.
Atas ialah kandungan terperinci Bagaimana fasad laravel berfungsi dan cara menggunakannya di tempat lain. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!