Thinkphp5 控制器方法内依赖注入

这是控制器
use app\index\model\Setting;
use app\index\model\User;

class Index
{
public function amos(User $user)
{
    print_R($user);exit;
}

public function wang(Setting $setting)
{
    print_r($setting);exit;
}
}

Model类

namespace app\index\model;

use think\Model;
class User extends Model
{


}


和
namespace app\index\model;

use think\Model;
class Setting extends Model
{

}

invoke方法自动调用(v5.0.2

5.0.2版本开始,如果依赖注入的类有定义一个可调用的静态invoke方法,则会自动调用invoke方法完成依赖注入的自动实例化。

invoke方法的参数是当前请求对象实例。

我这里比较懒,就不新建类继承自think\Model了,就直接在think\Model类里写了,原则上,tp框架的东西是绝对不能修改的。我这里只是做个示例。

Model基类代码:

abstract class Model implements \JsonSerializable, \ArrayAccess
{
//最底下添加这个方法。 
public static function invoke(Request $request)
{
    if($model = static::get($request->param('id'))){
        return $model;
    }
    return new static();
}
}

至此,可实现自动依赖注入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值