Rumah > rangka kerja php > Laravel > Mari kita bincangkan secara mendalam tentang kaedah bina() dalam bekas laravel

Mari kita bincangkan secara mendalam tentang kaedah bina() dalam bekas laravel

PHPz
Lepaskan: 2023-04-07 17:21:10
asal
692 orang telah melayarinya

Laravel ialah rangka kerja PHP popular yang digunakan secara meluas untuk pembangunan aplikasi web. Anda boleh membina aplikasi web yang cekap menggunakan rangka kerja Laravel dengan cepat adalah konsep yang sangat penting dalam Laravel. Container ialah bekas perkhidmatan dalam Laravel, digunakan untuk mengurus kelas dalam semua aplikasi, terutamanya pembekal perkhidmatan dan kelas suntikan kebergantungan. Dalam Laravel, kaedah bekas yang sangat penting ialah kaedah build().

Apakah bekas?

Dalam rangka kerja Laravel, bekas ialah konsep yang sangat penting, yang digunakan untuk mengurus kejadian kelas dalam aplikasi. Laravel mendaftarkan semua kelas ke dalam bekas, menjadikannya mudah untuk mengurus kelas ini. Dalam bekas, Laravel secara automatik akan menyelesaikan kebergantungan antara kelas, menjadikannya sangat mudah untuk menggunakan kelas.

Kaedah pembina bekas

Dalam Laravel, apabila menggunakan bekas, kita biasanya menggunakan kaedah pembina bekas. Tujuan kaedah ini adalah untuk mencipta contoh bekas baharu. Apabila membuat contoh kontena, kami boleh menghantar objek pembekal perkhidmatan ke dalam pembina, supaya kontena akan mendaftar dan menyelesaikan perkhidmatan dalam pembekal perkhidmatan secara automatik.

use Illuminate\Container\Container;

$container = new Container();
Salin selepas log masuk

Dalam Laravel, anda boleh menggunakan kaedah make() bekas untuk mendapatkan perkhidmatan yang didaftarkan dalam bekas. Contohnya:

$app = $container->make('Illuminate\Contracts\Foundation\Application');
Salin selepas log masuk

Kaedah binaan bekas

Dalam Laravel, kaedah yang sangat penting dalam bekas ialah kaedah build(). Kaedah build() digunakan untuk mencipta contoh kelas baharu. Apabila membuat contoh kelas, bekas akan menghuraikan secara automatik pembina kelas dan semua parameter yang diperlukannya. Sintaks kaedah

build() adalah seperti berikut:

/**
 * Resolve the given type from the container.
 *
 * @param  string  $abstract
 * @param  array   $parameters
 * @return mixed
 */
public function build($abstract, array $parameters = array());
Salin selepas log masuk

Apabila menggunakan kaedah build(), kita perlu lulus dalam kelas abstrak atau nama antara muka sebagai parameter, dan bekas akan cuba mencipta Contoh kelas ini. Jika pembina kelas ini perlu bergantung pada kelas lain, bekas akan menyelesaikan kebergantungan ini secara automatik.

Sebagai contoh, kami mempunyai kelas pembekal perkhidmatan AppProvidersLoggerServiceProvider, yang mempunyai kaedah register(), yang akan mendaftarkan contoh log ke dalam bekas:

use App\Loggers\DatabaseLogger;

class LoggerServiceProvider extends ServiceProvider
{
    public function register()
    {
        $this->app->singleton('logger', function ($app) {
            return new DatabaseLogger($app->make('Illuminate\Database\ConnectionInterface'));
        });
    }
}
Salin selepas log masuk

di atas Dalam kod , kami menggunakan kaedah singleton() untuk mendaftarkan tika log ke dalam bekas dan menyatakan bahawa tika log ini bergantung pada antara muka IlluminateDatabaseConnectionInterface. Apabila bekas mencipta contoh log, ia akan menyelesaikan pergantungan ini secara automatik.

Kita boleh menggunakan kaedah make() bekas untuk mendapatkan contoh log ini:

$logger = $container->make('logger');
Salin selepas log masuk

Dalam kod di atas, bekas akan menghuraikan kelas DatabaseLogger secara automatik dan menukar IlluminateDatabaseConnectionInterface Antara muka disuntik ke dalam kelas ini dan akhirnya contoh log dikembalikan.

Ringkasan

Bekas ialah konsep yang sangat penting dalam aplikasi Laravel. Bekas boleh digunakan untuk mengurus kejadian kelas dengan mudah dalam aplikasi dan kebergantungan antara kelas boleh diselesaikan secara automatik. Apabila menggunakan bekas, kaedah build() ialah kaedah yang sangat penting untuk mencipta kejadian kelas dan menyelesaikan kebergantungan secara automatik dalam pembinanya.

Atas ialah kandungan terperinci Mari kita bincangkan secara mendalam tentang kaedah bina() dalam bekas laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan