【初体验】理解php和实现php框架中的ioc容器

1008612   ·   发表于 4个月前   ·   编程代码
容器是什么?相信很多人听说过依赖注入,依赖注入实现的基础条件离不开容器,容器就是用来管理类依赖和注入的,负责服务的管理和解耦组件,最简单的理解我们可以把容器理解成一个超级大、专门存对象的数组。 如图所示调用者通过容器的标示获取到对象实例,图里可以看出来,可以通过 ::class 的方式来获取也可以直接通过对象标示获取实例对象。IOC是什么?大家可能都听说过IOC容器,IOC的全称是:(Inversion Of Control,反转控制)。反转控制目的是为了让我们不需要硬编码去创建对象,看图可以知道,容器里面存放着很多对象,当我们要使用的时候可以直接去用。而容器里面的对象不需要我们在代码中编码创建。在需要某个类对象的时候会去容器里面获取对象,如果对象不存在则会自动创建。这就是省略了我们在代码里面去创建对象的过程,由容器去帮我们实现这个创建的过程,这就叫反转控制computer = $computer; } public function program(){ $this->computer->run(); }}$sunny = new Sunny(new Computer());$sunny->program();这里可以看到 Sunny 这个类想要编程依赖类 Computer 这个类computer = $computer; } public function program(){ $this->computer->run(); }}$sunny = Container::getBean(Sunny::class);$sunny->program();一句话总结:解决创建类实例当中对其他类的依赖,动态的向某个对象提供它所需要的其他对象。依赖倒置解决的问题是松耦各个模块之间的重度依赖,上层模块不应该依赖底层模块,它们都应该依赖于抽象。class Cache{ public function set($key,$value){ $redis = new CFile(); $redis->set($key,$value); }}class CFile{ public function set($key,$value){ echo "file:{$key}->{$value}\n"; }$cache = new Cache();$cache->set("name","sunny");字数上限,详细请看图二

0 Reply   |  Until 4个月前 | 1584 View
LoginCan Publish Content