Rumah  >  Artikel  >  rangka kerja php  >  Panduan Penggunaan Bekas ThinkPHP6: Amalan Suntikan Ketergantungan

Panduan Penggunaan Bekas ThinkPHP6: Amalan Suntikan Ketergantungan

WBOY
WBOYasal
2023-08-27 08:00:55689semak imbas

Panduan Penggunaan Bekas ThinkPHP6: Amalan Suntikan Ketergantungan

Panduan Penggunaan Kontena ThinkPHP6: Amalan Suntikan Ketergantungan

Pengenalan:
Dalam pembangunan PHP moden, menggunakan bekas untuk melaksanakan suntikan kebergantungan adalah cara teknikal yang biasa. Dalam versi terkini rangka kerja ThinkPHP, ThinkPHP6, komponen kontena juga disepadukan untuk memudahkan pembangun mengamalkan suntikan pergantungan. Artikel ini akan memperkenalkan secara terperinci cara menggunakan bekas dengan betul dalam ThinkPHP6 dan menggunakan kod sampel untuk membantu pembaca memahami dengan lebih baik.

1. Apakah itu bekas?
Bekas ialah objek yang bertanggungjawab untuk menguruskan suntikan instantiasi dan pergantungan kelas. Ia secara automatik menyuntik kebergantungan antara objek dengan menghuraikan dan menjana contoh objek.

Dalam ThinkPHP6, komponen kontena dilaksanakan melalui komponen suntikan kebergantungan Symfony. Ia menyediakan pembangun dengan cara ringkas dan pantas untuk melaksanakan instantiasi kelas dan suntikan pergantungan.

2. Cara menggunakan bekas

  1. Mengkonfigurasi bekas
    Dalam ThinkPHP6, fail konfigurasi kontena terletak dalam fail provider.php dalam direktori konfigurasi. Kita boleh mentakrifkan cara kelas dibuat instantiated dan kebergantungannya dalam fail ini.

Sebagai contoh, kita perlu mengkonfigurasi kelas bernama "demo", yang bergantung pada kelas lain bernama "example", kita boleh mengkonfigurasinya seperti ini:

return [
    'demo'    => [
        ppdemoDemo::class, // 类名
        ['example'], // 依赖的其他类
        true, // 是否为单例
    ],
];

Dalam konfigurasi di atas, kami mentakrifkan kelas ppdemoDemo sebagai "demo " bergantung pada "contoh" kelas dan dinyatakan sebagai mod tunggal (benar bermaksud tunggal, palsu bermaksud bukan tunggal).

  1. Segera objek
    Selepas konfigurasi bekas selesai, kita boleh menggunakan bekas untuk membuat instantiate objek yang kita perlukan. Pertama, kita perlu memperkenalkan kelas kontena di mana kita perlu menggunakan kelas:
use thinkContainer;

Kemudian, kita boleh menggunakan bekas untuk membuat instantiate objek dengan cara berikut:

$demo = Container::pull('demo');

Dalam kod di atas, kita menggunakan Bekas: :pull() kaedah untuk Menghidupkan objek bernama "demo" dan menetapkannya kepada pembolehubah $demo.

  1. Daftar bekas
    Selepas kami melengkapkan konfigurasi dalam pembekal fail konfigurasi kontena.php, kami juga perlu mendaftar kontena semasa proses awal. Kami boleh menambah kod berikut selepas "Define Framework Directory" dalam fail entri projek public/index.php:
require __DIR__ . '/../vendor/autoload.php';

// 注册容器
    hinkContainer::getInstance()->register();

Dalam kod di atas, kami menggunakan kaedah Container::getInstance() untuk mendapatkan contoh kontena dan gunakan register( ) kaedah untuk mendaftarkan bekas.

3. Ringkasan
Melalui pengenalan artikel ini, kami telah mempelajari tentang kaedah menggunakan bekas untuk melaksanakan suntikan pergantungan dalam ThinkPHP6. Mula-mula kita perlu mengkonfigurasi bekas dalam pembekal fail konfigurasi.php, dan kemudian membuat instantiat objek melalui kaedah Container::pull(). Akhir sekali, daftarkan bekas dalam fail kemasukan.

Kaedah menggunakan bekas ini boleh membantu pembangun mengurus kebergantungan antara kelas dengan lebih standard dan fleksibel, serta meningkatkan kebolehgunaan semula dan kebolehselenggaraan kod. Saya percaya bahawa melalui kajian artikel ini, pembaca akan mempunyai pemahaman yang lebih mendalam tentang penggunaan bekas ThinkPHP6.

Kod rujukan:

<?php
// 容器配置文件config/provider.php

return [
    'demo'    => [
        ppdemoDemo::class,
        ['example'],
        true,
    ],
];

Atas ialah kandungan terperinci Panduan Penggunaan Bekas ThinkPHP6: Amalan Suntikan Ketergantungan. 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