1.容器的意思就是一个全局变量,里面存了很多对象,如果要用到某个对象就从里面取,前提就是要先把对象放进去 2.控制反转就是把自己的控制权交给别人 3.这两个结合就是,把自己的控制权交给别人并且创建的对象放进一个全局变量里 4.好处就是可以灵活的修改一个对象的属性,而不需要去修改类本身的代码
项目实践: 1.Application对象的resources属性数组就是那个容器 2.getResource方法就是控制生成对象的方法,生成一个对象的控制权交给了Application 3.这里先简化的规定下,自定义的类必须有createResource静态方法来创建自己这个对象
class Application{
private $resources= array();
public function getResource($class,$params) {
if (!isset($this->resources[$class])) {
$this->resources[$class] = call_user_func_array(array($class, 'createResource'), $params);
}
return $this->resources[$class];
}
}
class User {
private $name;
private $age;
public function __construct($name,$age){
$this->name=$name;
$this->age=$age;
}
public static function createResource($name,$age) {
return new self($name,$age);
}
public function says(){
echo $this->name;
}
}
$app=new Application();
$user=$app->getResource("User",array("taoshihan","1000"));
$user->says();