Luntai = $Luntai; } function run() { $this->Luntai->roll(); //调用luntai类的 roll方法 echo "这是宝马的轮胎"; } } //使用方法 /*$luntai = new Luntai(); $bmw = new Bmw($luntai); $bmw->run(); //这是轮胎类::这是宝马的轮胎 */ /** * 容器 */ class Container { //存放所要绑定的类 static $register = []; //绑定函数 //closure 就是个闭包的类型 static function bind($name, Closure $col) { //将键值对存到register中 //键就是name 值就是col self::$register[$name] = $col; } //创建对象函数 static function make($name){ $col = self::$register[$name]; return $col(); } } //将要实例化的类,绑定到register中去。 //以后用到的时候只需要通过make方法获取即可,不需要再重复实例化 ,类似于redis 键值对 Container::bind('luntai', function(){ return new Luntai(); }); Container::bind('bmw', function(){ return new Bmw(Container::make('luntai')); }); $bmw = Container::make('bmw'); //根据键值调用bmw类,并使用其方法 $bmw->run();