我必须检查一个类是否已经初始化(如果我已经完成了:$a = new MyClass;
)。我怎么能用PHP做到这一点?
感谢。
答案 0 :(得分:6)
这样做的一种方法是让类本身跟踪其所有实例:
class MyClass {
protected static $instances = array();
public function __construct() {
self::$instances[] = $this;
}
public static function countInstances() {
return count(self::$instances);
}
}
echo MyClass::countInstances();
(在销毁实例时,注意减少计数/引用,yadayada ......)
您可能还想更好地跟踪变量,以便以后不必弄明白,这取决于您的目标是什么。
答案 1 :(得分:2)
使用
if ($a instanceof MyClass) ...
答案 2 :(得分:1)
这一切都取决于你实际需要这个的原因,但实现这一目标的最糟糕的方法之一就是使用单身人士。别。 (好吧......拥有全球$a
会更加可怕)
相反,您可以使用创建MyClass
实例的工厂类重新创建相同的效果。基本上,您第一次执行的操作是将创建的实例存储到工厂的私有/受保护变量中,然后将其返回。下次检查工厂中是否已存储值。