我有一个 amfphp 使用的类,我在其中使用其他一些类来执行多项任务。我很好奇将这些类的实例保持在全局或函数范围内的最佳实践是什么。
例如
对于全局变量 $config。我在函数中这样使用它:
global $config;
对于范围变量,我这样做。
$config = new Config();
现在,当我的程序运行时,它会处理特定任务并关闭所有内容(我假设),然后再次调用另一个不同的任务。
现在哪一个更好并且性能有效?
我有一个 amfphp 使用的类,我在其中使用其他一些类来执行多项任务。我很好奇将这些类的实例保持在全局或函数范围内的最佳实践是什么。
例如
对于全局变量 $config。我在函数中这样使用它:
global $config;
对于范围变量,我这样做。
$config = new Config();
现在,当我的程序运行时,它会处理特定任务并关闭所有内容(我假设),然后再次调用另一个不同的任务。
现在哪一个更好并且性能有效?
由于 PHP 是基于请求的,因此在初始化对象时并没有太大的区别,因为无论如何都会在每个请求上重新创建它,但使用全局变量被认为是不好的做法,不应在新代码 IMO 中使用。
我建议像第二个示例一样创建一个配置类,但是如果您在代码中的多个位置都需要它,请不要每次都创建一个新实例,而是使用依赖注入或单例模式。
单身人士:
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();