在不使用单例的情况下在PHP中查找对象


Object lookup in PHP without using Singleton

在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
}