Rumah  >  Artikel  >  rangka kerja php  >  Apakah suntikan pergantungan dan penyongsangan kawalan dalam laravel

Apakah suntikan pergantungan dan penyongsangan kawalan dalam laravel

WBOY
WBOYasal
2022-06-06 10:44:082352semak imbas

Dalam laravel, suntikan kebergantungan ialah tingkah laku menyuntik komponen ke dalam aplikasi, yang merupakan pengisytiharan kebergantungan yang jelas ialah penyongsangan kawalan ialah prinsip reka bentuk pengaturcaraan berorientasikan objek, digunakan untuk mengurangkan kerumitan kod komputer . Tahap gandingan antara kelas bermakna satu kelas menyerahkan kawalannya kepada objek lain, dan kebergantungan antara kelas diselesaikan oleh objek ini.

Apakah suntikan pergantungan dan penyongsangan kawalan dalam laravel

Persekitaran pengendalian artikel ini: sistem Windows 10, Laravel versi 6, komputer Dell G3.

Apakah suntikan kebergantungan laravel dan penyongsangan kawalan?

1. Suntikan ketergantungan

Istilah suntikan kebergantungan ialah istilah yang dicadangkan oleh Martin Fowler. Ia adalah tindakan menyuntik komponen ke dalam aplikasi. Seperti kata Ward Cunningham:

Suntikan kebergantungan ialah elemen utama dalam seni bina tangkas.

Contoh:

class UserProvider{
    protected $connection;
 
    public function __construct(){
        $this->connection = new Connection;
    }
 
    public function retrieveByCredentials( array $credentials ){
        $user = $this->connection
                        ->where( 'email', $credentials['email'])
                        ->where( 'password', $credentials['password'])
                        ->first();
 
        return $user;
    }
}

Jika anda ingin menguji atau mengekalkan kelas ini, anda mesti mengakses contoh pangkalan data untuk melaksanakan beberapa pertanyaan. Untuk mengelakkan daripada melakukan ini, anda boleh memisahkan kelas ini daripada kelas lain, anda mempunyai satu daripada tiga pilihan untuk menyuntik kelas Sambungan tanpa menggunakannya secara langsung.

2. Penyongsangan Kawalan

Penyongsangan Kawalan (disingkat IoC) ialah prinsip reka bentuk dalam pengaturcaraan berorientasikan objek yang boleh digunakan Kurangkan gandingan antara kod komputer. Kaedah yang paling biasa dipanggil Dependency Injection (DI), dan kaedah lain dipanggil "Dependency Lookup". Melalui penyongsangan kawalan, apabila objek dicipta, entiti luaran yang mengawal semua objek dalam sistem menghantar rujukan objek yang bergantung kepadanya.

Ringkasnya, kelas menyerahkan kawalannya kepada objek lain dan pergantungan antara kelas diselesaikan oleh objek ini. Suntikan kebergantungan ialah pengisytiharan kebergantungan yang jelas, manakala pencarian kebergantungan menyelesaikan kebergantungan melalui carian.

Penyongsangan kawalan bukanlah kaedah, tetapi idea reka bentuk adalah sama dengan rangka kerja Spring Tidak perlu risau tentang penyongsangan kata nama atribut yang diberikan kepada objek , dan semua yang kita lakukan dalam rangka kerja adalah untuk mengendalikan bekas tersebut secara automatik akan mencari atribut yang diperlukan melalui pemetaan dan menetapkannya secara pasif untuk mendapatkan atribut objek.

Pengetahuan lanjutan:

Penggunaan dalam Laravel

Suntikan kelas:

App::bind('foo', function($app){    return new FooBar;
});

Contoh ini bermaksud mencipta kelas A dengan alias foo sebenarnya menjadikan FooBar apabila digunakan.

Cara untuk menggunakan kelas ini ialah:

$value = App::make('foo');

$value sebenarnya ialah objek FooBar.

Jika anda ingin menggunakan mod singleton untuk membuat instantiate kelas, kemudian gunakan:

App::singleton('foo', function(){    return new FooBar;
});

Dengan cara ini, objek yang sama akan dijadikan instantiated setiap kali.

[Cadangan berkaitan: tutorial video laravel]

Atas ialah kandungan terperinci Apakah suntikan pergantungan dan penyongsangan kawalan dalam laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn