我有一个由amfphp使用的类,我正在使用其中的一些其他类来执行多个任务。我很好奇,保持这些类的实例全局或在函数范围内的最佳实践是什么。
例如对于全局变量$config。我在函数中这样使用它:
global $config;
对于作用域变量我这样做。
$config = new Config();
现在当我的程序运行时,它处理特定的任务并关闭一切(我假设),对于另一个不同的任务再次调用相同。
现在哪一个更好,性能更有效?
因为PHP是基于请求的,所以在初始化对象的地方没有太大的区别,因为它无论如何都会在每个请求上重新创建,但是使用全局变量被认为是不好的做法,不应该在新代码中使用。
我建议像第二个例子那样创建一个配置类,但如果你在代码的几个地方都需要它,不要每次都创建一个新实例,而是使用依赖注入或单例模式。单:
public class Config
{
protected static $instance;
public static Instance()
{
if(self::instance === null)
self::instance = new Config(self::key);
return self::instance;
}
private static $key = "213453452";
public function __construct($key)
{
if($key !== self::key)
throw new InvalidArgumentException("Private Constructor");
}
//your config
}
依赖注入(简单示例):
public class MyClass
{
protected $config;
public __construct($config)
{
$this->config = $config;
}
public function DoWork()
{
$subClass = new MySubClass($this->config);
//To Stuff
}
}
$config = new Config();
$myClass = new MyClass($config);
$myClass->DoWork();