PHP MVC 全局变量
PHP MVC Globals Variables
我有点怀疑,我明白使用全局变量是一种不好的做法。
我有一个带有 php 的小型 MVC 应用程序,我想在其中创建一个名为 config.php 的文件.. 并在其中保存我将在我的 类,例子...
$config = array ();
$config ['db_host'] = 'localhost';
现在,我想知道将此文件包含在我的应用程序中的推荐方法是什么..我已经实现了一个自动加载器,我可以将它包含在此...
Class Autoload
{
public function __construct () {
global $ config;
require_once 'config.php';
}
}
但我真的不知道这是不是一个好习惯...
非常感谢您..
一般来说,使用全局变量或单例变量不是一个好习惯。您想要的是 "dependency injection." 此模式使您能够使用模拟对象进行测试。本文提供了依赖注入的一些理念和实践。
https://iconoun.com/blog/2017/05/05/php-globals-vs-dependencies/
你可以创建一个 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
以用于更具体的情况,例如,不同的用户类型。
我有点怀疑,我明白使用全局变量是一种不好的做法。
我有一个带有 php 的小型 MVC 应用程序,我想在其中创建一个名为 config.php 的文件.. 并在其中保存我将在我的 类,例子...
$config = array ();
$config ['db_host'] = 'localhost';
现在,我想知道将此文件包含在我的应用程序中的推荐方法是什么..我已经实现了一个自动加载器,我可以将它包含在此...
Class Autoload
{
public function __construct () {
global $ config;
require_once 'config.php';
}
}
但我真的不知道这是不是一个好习惯...
非常感谢您..
一般来说,使用全局变量或单例变量不是一个好习惯。您想要的是 "dependency injection." 此模式使您能够使用模拟对象进行测试。本文提供了依赖注入的一些理念和实践。 https://iconoun.com/blog/2017/05/05/php-globals-vs-dependencies/
你可以创建一个 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
以用于更具体的情况,例如,不同的用户类型。