具有魔术方法,全局数组或..的类?

时间:2014-04-26 10:09:08

标签: php dependency-injection global-variables magic-methods

我下载了一个非常简单的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];
    }
}

1 个答案:

答案 0 :(得分:1)

如果你的问题只是关于这个Registry类的问题,那么它是否比数组好?"那么:这个类只是一个数组的包装器,它没用。 IMO它是因为有人认为使用类而不是数组会自动使代码对象面向(这是错误的)。或者他/她只是想给阵列一个奇特的名字以使其目的更清晰(注册表)。

如果你愿意,你可以删除该类并使用数组,你不会失去任何东西。

或者如果你想做得更好,你可以开始学习依赖注入和DI容器(这是"注册表" pattern ==全局数组的替代模式)。