Swoole marco Hyperf (IV) - inyección de dependencia

En primer lugar no entienden, leer, en la segunda mitad de esta explicación está haciendo. De hecho, suele ser muy habitual en este otro marco, sólo que no sabemos su nombre se llama inyección de dependencias.

Para el código de sincronización agradable aplicación máquina local y Linux virtual, es posible por medio de WinSCP sincronizar automáticamente el archivo local con el servidor
Saqué el tejido local
Aquí Insertar imagen Descripción
se seleccionan directorio raíz
Aquí Insertar imagen Descripción
y luego se puede editar directamente el nuevo archivo con un editor en el local y de forma automática sincronización a Linux. Principalmente con el fin de ser capaz de prensa Ctrlpara ver el camino.

texto

Supongamos que necesitamos IndexControllerpara llamar dentro de la UserServiceclase de getInfoById(int $id)método.

Servicio app \ \ UserService.php

<?php
namespace App\Service;

class UserService
{
    public function getInfoById(int $id)
    {
        return $id;
    }
}

Inyección mediante el constructor, este ejemplo sólo para facilitar la comprensión, sin la atención

App \ Controller \ IndexController.php

<?php
namespace App\Controller;

use App\Service\UserService;
use Hyperf\HttpServer\Annotation\AutoController;

/**
 * @AutoController()
 */
class IndexController
{
    /**
     * @var UserService
     */
    private $userService;

    // 通过在构造函数的参数上声明参数类型完成自动注入
    public function __construct(UserService $userService)
    {
        $this->userService = $userService;
    }

    public function index()
    {
        $id = 123;
        // 直接使用
        return $this->userService->getInfoById($id);
    }
}
http://192.168.1.109:9501/index/index

Mediante la inyección comentario @Inject

<?php
namespace App\Controller;

use App\Service\UserService;
use Hyperf\Di\Annotation\Inject;
use Hyperf\HttpServer\Annotation\AutoController;

/**
 * @AutoController()
 */
class IndexController
{
    /**
     * 通过 `@Inject` 注解注入由 `@var` 注解声明的属性类型对象
     *
     * @Inject
     * @var UserService
     */
    private $userService;

    public function index()
    {
        $id = 2333;
        // 直接使用
        return $this->userService->getInfoById($id);
    }
}
http://192.168.1.109:9501/index/index

Aquí Insertar imagen Descripción

Notado? De hecho, llamé a una clase.
Aquí Insertar imagen Descripción
Flecha son de la misma clase.

De hecho, no es necesario hacer nuevos que se puede utilizar directamente en una clase por el controlador índice @ var.
La forma en que el constructor no se utiliza @Inject, por lo que necesita para inicializar la asignación mediante el constructor.

Mediante la adición de @Injectanotaciones, el método también se puede configurar sin usar lograr el efecto deseado.

Lista Serie marco Hyperf

Publicados 112 artículos originales · ganado elogios 75 · vistas 130 000 +

Supongo que te gusta

Origin blog.csdn.net/weikaixxxxxx/article/details/96564078
Recomendado
Clasificación