PHP MVC全局变量

PHP MVC全局变量,php,variables,global,Php,Variables,Global,我有点怀疑,我知道使用全局变量是一种不好的做法 我有一个使用php的小型MVC应用程序,我想在其中创建一个文件。。调用config.php并在其中保存我将在类中使用的全局变量,例如 $config = array (); $config ['db_host'] = 'localhost'; 现在,我想知道在我的应用程序中包含此文件的推荐方式。。我已经实现了一个自动加载器,我可以把它包括在这个 Class Autoload { public function __construct ()

我有点怀疑,我知道使用全局变量是一种不好的做法

我有一个使用php的小型MVC应用程序,我想在其中创建一个文件。。调用config.php并在其中保存我将在类中使用的全局变量,例如

$config = array ();
$config ['db_host'] = 'localhost';
现在,我想知道在我的应用程序中包含此文件的推荐方式。。我已经实现了一个自动加载器,我可以把它包括在这个

Class Autoload
{
    public function __construct () {
        global $ config;
        require_once 'config.php';
    }
}
但我真的不知道这是否是一个好的做法


非常感谢您。

一般来说,使用全局或单例不是一个好的做法。取而代之的是“依赖项注入”。此模式使您能够使用模拟对象进行测试。本文提供了依赖注入的一些原理和实践。
您可以创建一个
类来代替globals,如下所示

class Autoload {

    public $value1;
    public $value2;
    public static instances = array();

    public static function instantiate($className) {
        if (isset($instances[$className])) {
            return $instances[$className];
        }
        $newInstance = new $className();
        $newInstance->value1 = "foo";
        $newInstance->value2 = "bar";
        return $instances[$className] = $newInstance;
    }
}

您可以继承这个
,用于更具体的情况,例如,不同的用户类型。

这不是一个好的做法。您好,谢谢您的快速回复。你能帮我找到更好的方法吗?我真的想不出另外一个了。再次感谢你?哇。。好文章,我正在读,读完后,你一定会得到我最好的答案。。非常非常感谢这篇优秀的文章