Maison  >  Article  >  cadre php  >  Injection de dépendances dans ThinkPHP6

Injection de dépendances dans ThinkPHP6

王林
王林original
2023-06-20 08:12:091382parcourir

L'injection de dépendances est un concept très important dans le développement PHP moderne. Elle peut aider les développeurs à mieux gérer les dépendances entre les classes et à améliorer l'évolutivité et la réutilisabilité du code. Dans le framework PHP ThinkPHP6, l'injection de dépendances est également bien prise en charge.

Dans ThinkPHP6, nous pouvons effectuer une injection de dépendances via des annotations ou des fichiers de configuration. Examinons de plus près comment utiliser ces deux méthodes.

Tout d’abord, regardons la méthode d’annotation. En utilisant des annotations dans les classes, ThinkPHP6 peut effectuer automatiquement une injection de dépendances. Les étapes pour l'injection de dépendances à l'aide d'annotations sont les suivantes :

  1. Créer une classe qui nécessite une injection de dépendances
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. Utiliser des annotations dans le constructeur de la classe qui doit être injectée
use appserviceUserService;

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

Dans cet exemple, nous utilisons Dependency l'injection peut être réalisée en annotant @Inject et en spécifiant le nom de la classe à injecter UserService. @Inject 注解,并指定需要注入的类的名称 UserService ,就可以实现依赖注入。

接下来,我们看一下配置文件方式。通过这种方式,我们可以在配置文件中定义需要注入的类及其依赖关系。以配置文件方式进行依赖注入的步骤如下:

  1. 创建需要依赖注入的类
namespace appcontroller;

class UserController 
{
    private $userService;
 
    public function __construct() {}
 
    public function index($userId) 
    {
        $user = $this->userService->getUserById($userId);
 
        return $user;
    }
}
  1. 在配置文件中进行配置

app/config/service.php 中,添加以下代码:

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

在这个示例中,我们定义了一个名为 userService 的服务,指定它对应的类为 appserviceUserService::class

  1. 进行依赖注入
namespace appcontroller;

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

在这个示例中,我们通过 app('userService') 方法从容器中获取 userService 对象,并将其赋值给 $userService

Ensuite, regardons la méthode du fichier de configuration. De cette façon, nous pouvons définir les classes à injecter et leurs dépendances dans le fichier de configuration. Les étapes d'injection de dépendances dans le fichier de configuration sont les suivantes :

🎜Créez la classe qui nécessite l'injection de dépendances🎜🎜rrreee🎜🎜Configurez-la dans le fichier de configuration🎜🎜🎜Dans app/config/service.php code> , ajoutez le code suivant : 🎜rrreee🎜Dans cet exemple, nous définissons un service nommé <code>userService et spécifions sa classe correspondante comme appserviceUserService::class. 🎜
    🎜Injection de dépendances🎜🎜rrreee🎜Dans cet exemple, nous obtenons userService du conteneur via la méthode app('userService') et attribuez-le à l'attribut $userService pour implémenter l'injection de dépendances. 🎜🎜Les deux façons ci-dessus d'effectuer l'injection de dépendances dans ThinkPHP6 peuvent toutes deux nous aider à mieux gérer les dépendances entre les classes, rendant le code plus évolutif et réutilisable. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Utiliser Ajax dans ThinkPHP6Article suivant:Utiliser Ajax dans ThinkPHP6