Rumah > rangka kerja php > ThinkPHP > Suntikan kebergantungan dalam ThinkPHP6

Suntikan kebergantungan dalam ThinkPHP6

王林
Lepaskan: 2023-06-20 08:12:09
asal
1464 orang telah melayarinya

Suntikan kebergantungan ialah konsep yang sangat penting dalam pembangunan PHP moden Ia boleh membantu pembangun mengurus kebergantungan antara kelas dengan lebih baik dan meningkatkan kebolehskalaan dan kebolehgunaan semula. Dalam rangka kerja PHP ThinkPHP6, suntikan pergantungan juga disokong dengan baik.

Dalam ThinkPHP6, kami boleh melakukan suntikan pergantungan melalui anotasi atau fail konfigurasi. Mari kita lihat lebih dekat cara menggunakan kedua-dua kaedah ini.

Pertama, mari kita lihat kaedah anotasi. Dengan menggunakan anotasi dalam kelas, ThinkPHP6 boleh melakukan suntikan pergantungan secara automatik. Langkah-langkah untuk suntikan kebergantungan menggunakan anotasi adalah seperti berikut:

  1. Buat kelas yang memerlukan suntikan kebergantungan
namespace appcontroller;

use appserviceUserService;

class UserController 
{
    private $userService;
 
    public function __construct(UserService $userService) 
    {
        $this->userService = $userService;
    }
 
    public function index($userId) 
    {
        $user = $this->userService->getUserById($userId);
 
        return $user;
    }
}
Salin selepas log masuk
  1. Gunakan anotasi dalam pembina kelas yang memerlukan untuk disuntik
use appserviceUserService;

class UserController 
{
    /**
     * @Inject
     * @var UserService
     */
    private $userService;
 
    public function __construct() {}
 
    public function index($userId) 
    {
        $user = $this->userService->getUserById($userId);
 
        return $user;
    }
}
Salin selepas log masuk

Dalam contoh ini, kita boleh melaksanakan suntikan kebergantungan dengan menggunakan @Inject anotasi pada pembina dan menyatakan nama kelas yang perlu disuntik UserService.

Seterusnya, mari lihat kaedah fail konfigurasi. Dengan cara ini, kita boleh menentukan kelas yang perlu disuntik dan kebergantungan mereka dalam fail konfigurasi. Langkah-langkah untuk suntikan kebergantungan melalui fail konfigurasi adalah seperti berikut:

  1. Buat kelas yang memerlukan suntikan kebergantungan
namespace appcontroller;

class UserController 
{
    private $userService;
 
    public function __construct() {}
 
    public function index($userId) 
    {
        $user = $this->userService->getUserById($userId);
 
        return $user;
    }
}
Salin selepas log masuk
  1. Konfigurasikan dalam fail konfigurasi

Dalam app/config/service.php, tambahkan kod berikut:

return [
    'userService' => appserviceUserService::class,
];
Salin selepas log masuk

Dalam contoh ini, kami mentakrifkan perkhidmatan bernama userService dan menentukan kelas yang sepadan sebagai appserviceUserService::class.

  1. Lakukan suntikan pergantungan
namespace appcontroller;

class UserController 
{
    private $userService;
 
    public function __construct()
    {
        $this->userService = app('userService');
    }
 
    public function index($userId) 
    {
        $user = $this->userService->getUserById($userId);
 
        return $user;
    }
}
Salin selepas log masuk

Dalam contoh ini, kita mendapat objek app('userService') daripada bekas melalui kaedah userService dan tetapkan kepada $userService Atribut boleh mencapai suntikan pergantungan.

Di atas ialah dua cara untuk melakukan suntikan kebergantungan dalam ThinkPHP6 Kedua-duanya boleh membantu kami mengurus kebergantungan antara kelas dengan lebih baik, menjadikan kod lebih berskala dan boleh digunakan semula.

Atas ialah kandungan terperinci Suntikan kebergantungan dalam ThinkPHP6. 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