批改状态:合格
老师批语:容器的概念无处不在
<?phpnamespace mvc_demo;// 控制器依赖注入点改到构造方法, 实现对外部依赖对象的共享// 1. 加载模型类require 'Model.php';// 2. 加载视图require 'View.php';// 3. 服务容器class Container1{// 对象容器protected $instances = [];// 绑定: 向对象容器中添加一个类实例public function bind($alias, \Closure $process){$this->instances[$alias] = $process;}// 取出: 从容器中取出一个类实例 (new)public function make($alias, $params = []){return call_user_func_array($this->instances[$alias], []);}}$container = new Container1;// 绑定$container->bind('model', function () {return new Model;});$container->bind('view', function () {return new View;});// 3. 创建控制class Controller4{public function index(Container1 $container){// 1. 获取数据$data = $container->make('model')->getData();// 2. 渲染模板/视图return $container->make('view')->fetch($data);}}// 客户端// 实例化控制器类$controller = new Controller4();echo $controller->index($container);//销毁对象unset($controller);
在MVC模式下通过对外部对象的统一管理,让对象更易于维护。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号