클래스가 초기화되었는지 확인해야합니다 (이미 완료 한 경우 : $a = new MyClass;
). 어떻게 PHP를 사용하여 이것을 할 수 있습니까?클래스의 인스턴스를 가져 오는 방법은 무엇입니까?
감사합니다.
클래스가 초기화되었는지 확인해야합니다 (이미 완료 한 경우 : $a = new MyClass;
). 어떻게 PHP를 사용하여 이것을 할 수 있습니까?클래스의 인스턴스를 가져 오는 방법은 무엇입니까?
감사합니다.
한 가지 방법은 클래스 자체가 모든 인스턴스를 추적 할 수 있도록하는 것입니다 :
class MyClass {
protected static $instances = array();
public function __construct() {
self::$instances[] = $this;
}
public static function countInstances() {
return count(self::$instances);
}
}
echo MyClass::countInstances();
(인스턴스를 파괴 할 때 계수/참조를 줄일주의, yadayada ...)
변수를 더 잘 추적하여 나중에 알아낼 필요가 없도록하려는 경우, 목표가 무엇인지에 따라 달라질 수 있습니다.
사용을 할 수
if ($a instanceof MyClass) ...
이 모든 것이 실제로 실제로 필요한 이유에 따라 다르지만이를 달성하는 최악의 방법 중 하나는 싱글 톤을 사용하는 것입니다. 몰라. (좋아, 글로벌 $a
데 더 겁나는 것입니다)
대신 MyClass
인스턴스를 만드는 팩터 리 클래스를 사용하여 동일한 효과를 다시 만듭니다. 본질적으로 당신이 처음 수행하는 것은 생성 된 인스턴스를 팩토리의 private/protected 변수에 저장하고 리턴하는 것입니다. 다음 번에 공장에 저장된 값으로 이미 있는지 확인합니다.
클래스가 이미 어딘가에서 사용 중인지 여부는 의미합니까? 그게 가능한지 확실하지 않습니다. 당신은 무엇을하고 싶습니까, 당신의 최종 목표는 무엇입니까? –