简单对象注入
我们先在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类