这是控制器 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(); }
}
至此,可实现自动依赖注入