1、什么是容器?那么装的是什么?为什么要这么做?
字面意思理解为装东西的器皿。
装的是类实例化的对象。
第一点使用对象方便,第二点解耦。
2、什么是依赖注入?
依赖注入是指对类的依赖通过构造器完成自动注入(控制器中)。
<?phpnamespace app\controller;use think\Request;//必须引用class Index{protected $req;//将Request的类通过构造器自动注入,实例化变量名$Requestpublic function __construct(Request $Request){//赋值变量名$this->req = $Request;}public function hello($name){return 'Hello,' . $name . '!This is '. $this->req->action();}}//使用容器来实例化的话,可以自动进行依赖注入。invoke(类名)//某个方法依赖注入invoke(['类名','方法名'])
扩展知识:
使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。
接口使用规范
- 接口不能实例化
- 接口的属性必须是常量
- 接口的方法必须是public【默认public】,且不能有函数体
- 类必须实现接口的所有方法
- 一个类可以同时实现多个接口,用逗号隔开
- 接口可以继承接口【用的少】
interface Cinema{const film = '加勒比海盗';public function show();}class Order implements Cinema{public function show(){echo "影院 接口开放了<br>";}}
备注:上面的例子要注意一点,接口的方法名是show,继承接口的类中必须有show这个方法,不然就会报错。也就是说接口的方法是假的,真正起作用的是在继承的类中的方法。