PHP MVC全局变量

时间:2017-06-06 12:40:17

标签: php variables global

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

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

$config = array ();
$config ['db_host'] = 'localhost';

现在,我想知道在我的应用程序中包含此文件的推荐方法。我已经实现了自动加载器,我可以将其包含在此...

Class Autoload
{
    public function __construct () {
        global $ config;
        require_once 'config.php';
    }
}

但我真的不知道这是不是一个好习惯......

非常感谢您提前...

2 个答案:

答案 0 :(得分:2)

一般来说,使用全局或单身人士并不是一个好习惯。你想要的是#34;依赖注入。"此模式使您可以使用模拟对象进行测试。本文提供了一些依赖注入的原理和实践。 https://iconoun.com/blog/2017/05/05/php-globals-vs-dependencies/

答案 1 :(得分:0)

您可以创建class,而不是全局变量,就像这样

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;
    }
}

您可以为更具体的情况继承此class,例如,不同的用户类型。