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

Suntikan kebergantungan dalam ThinkPHP6

王林
王林asal
2023-06-20 08:12:091409semak imbas

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;
    }
}
  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;
    }
}

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;
    }
}
  1. Konfigurasikan dalam fail konfigurasi

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

return [
    'userService' => appserviceUserService::class,
];

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;
    }
}

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!

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