批改状态:合格
老师批语:析构不是这样用的, 如果不确定它的用法, 建议就不要在类中添加这个方法, 交给系统自动实现它
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;});
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);
function __destruct(){echo "再见" . $this->name;}
这样就使用了服务容器将所有要用的对象进行封装,在服务容器内进行了统一的管理。在完成整个软件项目开发的过程中,有时需要多人合作,有时也可以自己独立完成,不管是哪一种,随着代码量上升,写着写着就“失控”了,渐渐“丑陋接口,肮脏实现”,项目维护成本和难度上升,到了难以维持的程度,只有重构或者重新开发。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号