2009-05-04 5 views
3

는이 코드가 있다고 가정하자 : 나는 그것이 (그리고 각각의 클래스 가능한 경우) 인스턴스화 된 객체의 모든 이름을 에코받을 수 있나요 어떻게PHP는 선언 된 모든 클래스의 이름을 표시합니까?

<?php 
class hello { 
    var $greeting = "hello"; 
    function hello(){ 
     echo $this->greeting; 
     return; 
    } 
} 

$hello1 = new hello; 
$hello2 = new hello; 
$hello4 = new hello; 
?> 

을 있도록 에코 (아마도 배열) "hello1 => hello, hello2 => hello, hello4 => hello ".

이것이 가능하지 않은 경우, echo instance_name ($ this)과 같은 클래스 내에서 인스턴스 이름을 알 수있는 방법이 있습니까? 나를 "hello1"로 데려 갈거야. 감사.

+1

제목을 편집하고 싶지는 않지만 오해의 소지가 있습니다. 선언 된 클래스는 하나뿐입니다. 클래스 hello입니다. 이 인스턴스를 참조하는이 클래스 (또는 다른 클래스) 및 변수의 _ 인스턴스 _을 찾고 있습니다. – VolkerK

답변

9

당신은 존재하는 모든 객체의 배열을 얻을 수 get_defined_vars를 호출 할 수 있으며, 각 하나의 클래스 이름을 얻을 수 get_class를 사용 (코드는 테스트하지,하지만 그것을 작동합니다) :

참고
$vars = array(); 
foreach (get_defined_vars() as $var) { 
    $vars[$var] = get_class($var); 
} 

, 당신이 "선언 된 클래스"라고 부르는 것은 "객체"로 더 잘 알려져 있습니다.

두 번째 질문을 할 수 없습니다. 예를 들어 보자 :

$hello1 = $hello2 = new hello(); 

을 지금, 나는이 instance_name 호출하는 경우, 그것은 'hello1'또는 'hello2'를 반환해야합니까?

+0

True .. 어떤 vars가 객체인지 확인하는 데 필요한 경우 is_object와 결합합니다. – Petrunov

+0

그래, 고마워, get_defined_vars()를 조사하고 있었지만 그 객체도 거기에 있다는 것을 몰랐고, 감사. – Yifan

관련 문제