2011-10-17 4 views
0

클래스가 초기화되었는지 확인해야합니다 (이미 완료 한 경우 : $a = new MyClass;). 어떻게 PHP를 사용하여 이것을 할 수 있습니까?클래스의 인스턴스를 가져 오는 방법은 무엇입니까?

감사합니다.

+2

클래스가 이미 어딘가에서 사용 중인지 여부는 의미합니까? 그게 가능한지 확실하지 않습니다. 당신은 무엇을하고 싶습니까, 당신의 최종 목표는 무엇입니까? –

답변

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 ...)

변수를 더 잘 추적하여 나중에 알아낼 필요가 없도록하려는 경우, 목표가 무엇인지에 따라 달라질 수 있습니다.

2

사용을 할 수

if ($a instanceof MyClass) ... 
1

이 모든 것이 실제로 실제로 필요한 이유에 따라 다르지만이를 달성하는 최악의 방법 중 하나는 싱글 톤을 사용하는 것입니다. 몰라. (좋아, 글로벌 $a 데 더 겁나는 것입니다)

대신 MyClass 인스턴스를 만드는 팩터 리 클래스를 사용하여 동일한 효과를 다시 만듭니다. 본질적으로 당신이 처음 수행하는 것은 생성 된 인스턴스를 팩토리의 private/protected 변수에 저장하고 리턴하는 것입니다. 다음 번에 공장에 저장된 값으로 이미 있는지 확인합니다.

관련 문제