在PHP中,我们可以很容易地使用单例引用any classes
中的对象,例如
$obj = SingletonClass::getInstance();
如果我不使用单例,还有其他选择吗?
如果我不使用单例,是否有其他选择?
是的,这个东西叫做依赖注入,它已经被讨论过无数次了。基本上,这意味着您实例化一个类,然后将它的实例传递给需要它的其他类。例如:
$pdo = new PDO(....);
$userGateway = new UserGateway($pdo);
$imageGateway = new ImageGateway($pdo);
可以看到,同一个实例在这些类之间共享。
我将推荐单例,但您可以尝试这样做:
$GLOBAL = null;
每当你想启动它时:
if ($GLOBAL != null()) {
$GLOBAL = new YourObject();
}
只需在全局作用域中实例化您的对象。示例如下:
#file1.php
require_once('file2.php');
$instance = new ClassName();
#file2.php
function do_something()
{
global $instance;
#do stuff with with
}