我有点怀疑,我知道使用全局变量是一种不好的做法。
我有一个带有php的小型MVC应用程序,其中我想创建一个名为config.php的文件,在其中,保存我将在我的类中使用的全局变量,例如...
$config = array ();
$config ['db_host'] = 'localhost';
现在,我想知道在我的应用程序中包含此文件的推荐方法。我已经实现了自动加载器,我可以将其包含在此...
Class Autoload
{
public function __construct () {
global $ config;
require_once 'config.php';
}
}
但我真的不知道这是不是一个好习惯......
非常感谢您提前...
答案 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
,例如,不同的用户类型。