|
概念:
1.依赖注入:改变了使用对象前,必须先创建对象的传统方式,而是从外部注入所依赖的对象;
2.ThinkPHP5 依赖注入主要是指把对象注入到可访问控制器;
3.注入方式:控制器的构造方法和操作方法;
4.实现方法:对参数进行对象类型约束则会自动触发依赖注入,自动实例化对象;
// 如果想要 2可以访问 1中的变量有两种方法 【 这是前几课的内容 当然有第三种】
// 第一种:继承基类controller 可以使用变量的属性
// 第二种: 实例化请求类 来获取请求对象
// 1.1 先去继承
// 1.2 直接调用 request 的 param 来获取请求变量的值 写法见 mn3
// 2.1 先导入Request 类;【视频中没继承,难道导入和继承不一样?】
// 2.2 使用 Request::instance() 获得请求对象 详情见 mn4
第三种:【官方推荐,不需要依赖于控制器基类,也不需要导入命名空间,效率更高】
【其实吧 我觉得吧 所谓的变量共享 就是搞个参数 丢到初始化的状态 然后每个都可以访问 ,但是共享的不是这个参数的值 而是这个参数的键 是不是很奇怪 嘿嘿】- <?php
- namespace app\articles\controller;
- // use think\Controller; 这是1.1 继承的是 基类
- // class Yz extends Controller 这是1.1
- use think\Request; // 这是 2.1 导入请求类
- class Yz
- {
- // 3.2 创建构造方法 第一步 创建一个属性 用来存放请求对象
- protected $request ;
- // 3.3 创建构造方法 并且 注入依赖对象
- public function __construct(Request $request)
- {
- // 这个构造函数的作用就是 先实例化请求类。然后赋值给 request
- $this->request = Request::instance() ;
- }
- public function mn1($lma)
- {
- return '学习课程是:'.$lma;
- }
- public function mn2()
- {
- return '学习课程是:'.$lma;
- }
- // 如果想要 2可以访问 1中的变量有两种方法 【 这是前几课的内容 当然有第三种】
- // 第一种:继承基类controller 可以使用变量的属性
- // 第二种: 实例化请求类 来获取请求对象
- // 1.1 先去继承
- // 1.2 直接调用 request 的 param 来获取请求变量的值 写法见 mn3
-
- // 2.1 先导入Request 类;【视频中没继承,难道导入和继承不一样?】
- // 2.2 使用 Request::instance() 获得请求对象 详情见 mn4
-
- public function mn3()
- {
- return '学习课程是:'.$this->request->param('lma'); //这种写法 不需要传入参数 直接输出请求的变量
- }
- public function mn4()
- {
- return '学习课程是:'.Request::instance()->param('lma'); //这种写法 不需要传入参数 直接输出请求的变量
- }
- // 第三种:将请求变量,以方法参数的方式直接注入到当前的操作中
- // 然后将参数申明为 request 类型,当我们使用时 会自动触发实例化过程 创建request 对象 这就叫注入
- // 但是 在mn5 注入的请求对象 $request 并不能在 mn7中调用 为了能调用, 就把这个对象注入到构造方法中
- //
-
- // public function mn5(Request $request)
- // // 要实例化的对象 就是这个 request [ 我在想啊 是不是换个名字也可以? 你还别说 真可以 看mn6 这果然只是个名称 ] 这个写法 就叫注入 向该操作注入一个对象 这个注释 是因为 后面不需要在操作中注入了 所以我保存个记录
- // {
- // return '学习课程是:'.$request->param('lma');
- // }
-
- // public function mn6(Request $rd) // 访问时 自动实例化了这个 $rd对象 ; 然后操作这个对象 即可 【咋操作 是不是傻 对象 属性方法怎么调用 就怎么操作呗】
- // {
- // return '学习课程是:'.$rd->param('lma');
- // }
- public function mn7()
- {
- // return '学习课程是:'.$request->param('lma'); // 写构造函数之前的写法
- return '学习课程是:'.$this->request->param('lma');
-
- }
- public function mn8() // 写这个 就是为了 替换掉 mn5 看好了 mn7 和 mn8 没有变量做参数
- {
- // return '学习课程是:'.$request->param('lma');
- return '学习课程是:'.$this->request->param('lma');
- }
- }
复制代码
|
|