我下载了一个非常简单的MVC,并将其转换为我喜欢的样子。
我看到在index.php入口点文件中,一个寄存器对象(下面的类代码)被实例化,一个模板和路由器对象被传递给它,它将在MVC架构中全局访问。
只使用全局数组有什么区别?这不是更简单吗?或者有更好的处理方法吗?
我只是在寻找一种更好的方式来传递这些物体。
我读到魔术方法不好,因为它很难调试和重新考虑。但我读过类似的关于全局数组的文章。
Class Registry {
private $vars = array();
public function __set($index, $value) {
$this->vars[$index] = $value;
}
public function __get($index) {
return $this->vars[$index];
}
}
如果你的问题只是关于"这个Registry
类有什么,它比数组好吗?"那么:这个类只是数组的包装器,它没有用。IMO,这是因为有人认为使用类而不是数组会自动使代码面向对象(这是错误的)。或者他/她只是想给数组起一个花哨的名字,让它的用途更清楚(注册表)。
如果您愿意,您可以删除该类并使用数组,这样就不会丢失任何内容。
或者,如果您想做得更好,可以开始学习依赖注入和DI容器(这是"registry"模式==全局数组的替代模式)。