Hyperf的依賴注入(未完結)

簡單對象注入
我們先在app/下新建一個Service文件夾並新建一個UserService類,用於注入

<?php
namespace App\Service;
class UserService
{
    public function  getInfoById(int $id)
    {
        return $id;
    }
}

1.構造函數的方式實現依賴注入

<?php
namespace App\Controller;
use Hyperf\HttpServer\Annotation\AutoController;
use Hyperf\HttpServer\Annotation\Controller;
use App\Service\UserService; //要注入的類
/**
 * Class HyperfDiController
 * @package App\Controller
 * @AutoController() //路由註解
 */
class HyperfDiController
{
    /**
     * @var Userservice
     */
    private $Userservice;

    /**
     * 通過構造函數參數上聲明參數類型的方式實現注入
     */
    public function __construct(Userservice $Userservice)
    {
        //將注入的類對象賦值給私有屬性
       $this->Userservice = $Userservice;
    }
    public function index()
    {
        //直接使用 調用Service類中的getInfoById方法
       return $this->Userservice->getInfoById(1);
    }
}

2.通過@Inject註解配合@var的值完成依賴注入

<?php
namespace App\Controller;
use Hyperf\Di\Annotation\Inject;//引入@Inject註解
use Hyperf\HttpServer\Annotation\AutoController;
use Hyperf\HttpServer\Annotation\Controller;
use App\Service\UserService; //要注入的類
/**
 * Class HyperfDiController
 * @package App\Controller
 * @AutoController() //路由註解
 */
class HyperfDiController
{
    /**
     * 通過`@Inject()`註解注入,由`@var`聲明的屬性類型對象
     * @Inject()
     * @var Userservice
     */
    private $Userservice;

    public function index()
    {
        //直接使用 調用Service類中的getInfoById方法
       return $this->Userservice->getInfoById(1);
    }
}

抽象對象注入
我們現在來修改一下我們需要注入的UserService類


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章