Masalah dengan "fasad" dan "kontrak" laravel
过去多啦不再A梦
过去多啦不再A梦 2017-05-16 16:47:41
0
3
493

Masalah dengan "fasad" dan "kontrak" laravel:
Ada dua soalan:
1. Apakah senario penggunaan kedua-dua perkara ini?
2 Saya tidak faham mengapa kedua-dua perkataan ini digunakan. Saya rasa ia tidak konsisten.

过去多啦不再A梦
过去多啦不再A梦

membalas semua(3)
给我你的怀抱

Ringkasnya:
Penampilan (Fasad yang anda maksudkan) ialah pelaksanaan Mod Penampilan. 外观(你说的门面)是外观模式的实现。
协议(你说的契约)是工厂方法模式抽象工厂模式Protokol (Contract yang anda maksudkan) ialah pelaksanaan Factory Method Pattern atau Abstract Factory Pattern.

Baca corak reka bentuk dan anda akan mendapat banyak.

小葫芦

Anda mesti belajar menggunakan bekas suntikan kebergantungan dahulu.

Laravel’s Facade ialah jalan pintas untuk memanggil perkhidmatan daripada bekas.

Apabila tiada Facade, anda mungkin perlu mendapatkan perkhidmatan/objek seperti ini dan kemudian hubungi:

$service = App::make('some_service');
$service->doSomething();

Oleh kerana anda telah mendaftarkan 'some_service' dalam bekas, bekas itu boleh membuat contoh untuk anda. 'some_service',所以容器能make一个实例给你。

Facade只是用静态方式简化了这个使用过程,底层用__callStatic

Fasad hanya memudahkan proses penggunaan secara statik Lapisan bawah menggunakan __callStatic untuk menghantar fungsi dan parameter kepada contoh perkhidmatan:

class SomeService extends Facade
{
    protected static function getFacadeAccessor()
    {
        return 'some_service'; // 这是容器里的键
    }
}

SomeService::doSomething(); // 底层和第一段代码是类似的
Kontrak ialah sekumpulan antara muka yang disertakan dengan rangka kerja, yang boleh dilaksanakan melalui suntikan pergantungan.

public function index(SomeService $service) { // 等服务容器注入一个SomeService。
    $service->doSomething();
}
Fasad dan Kontrak hanyalah cara yang berbeza untuk menggunakan bekas suntikan kebergantungan Untuk menggunakan Fasad, anda pergi ke bekas untuk mendapatkannya sendiri (gunakan bekas sebagai Pencari Perkhidmatan), dan untuk menggunakan Kontrak, anda menunggu bekas untuk menyuntik tanggungan. . 🎜
曾经蜡笔没有小新

Fasad, secara ringkasnya, ialah memberikan alias kepada perkhidmatan yang terikat dalam bekas perkhidmatan, menggunakan fungsi class_alias
Sebagai contoh, Apl sepadan dengan kelas Container.

Sesuatu kontrak, seperti namanya, adalah peraturan yang diakui dan dipatuhi oleh kedua-dua pihak, dan "antara muka" juga mempunyai ciri-ciri ini, ia harus "pengaturcaraan berorientasikan antara muka". terangkan dengan jelas. Saya masih kurang berpengalaman , poster memerlukan lebih banyak latihan dan pengalaman, harap maafkan saya...

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan