<?php // 工具类 class Db { public function conn() { return '数据库连接成功!<br>'; } } class Validate { public function check() { return '数据验证成功!<br>'; } } class View { public function show() { return '数据展示成功!<br>'; } } // 创建容器,将类与类的实例化过程绑定到容器中 class Container { protected $container = []; public function bind($validate,Closure $param) { $this->container[$validate] = $param; } public function make($validate,$param = []) { return call_user_func_array($this->container[$validate],[]); } } // 服务注册,bind将可能用到的工具类全部绑定到容器中 $container = new Container(); $container->bind('db',function(){ return new Db(); }); $container->bind('validate',function(){ return new Validate(); }); $container->bind('view',function(){ return new View(); }); // 依赖容器 class User { public function login(Container $container) { echo $container->make('db')->conn(); echo $container->make('validate')->check(); echo $container->make('view')->show(); } } $user = new User(); echo $user->login($container);
老师我想问:Container类中的make()方法中的call_user_func_array()执行的是哪个函数啊?是make()吗?