cari

Rumah  >  Soal Jawab  >  teks badan

Masalah dengan "fasad" dan "kontrak" laravel

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梦2752 hari yang lalu471

membalas semua(3)saya akan balas

  • 给我你的怀抱

    给我你的怀抱2017-05-16 16:49:41

    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.

    balas
    0
  • 高洛峰

    高洛峰2017-05-16 16:49:41

    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. . 🎜

    balas
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 16:49:41

    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...

    balas
    0
  • Batalbalas