2009-05-04 11 views
3

が、私はこのコードを持っているとしましょう:そのので、それがエコー(おそらく配列内)「hello1、宣言されたすべてのクラスのPHPの表示名ですか?

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

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

(それぞれのクラス可能であれば)私はそれがインスタンス化されたオブジェクトのすべての名前をエコーし​​てもらうにはどうすればよいです=> hello、hello2 => hello、hello4 => hello "

これが不可能な場合は、クラス内からインスタンスの名前を伝える方法がありますか?echo instance_name($ this);私は "hello1"を得るだろう。ありがとう。

+1

タイトルを編集したくないかもしれませんが、それは少し誤解を招きます。宣言されたクラスはクラスhelloだけです。あなたは、この(または他の)クラスとそれらのインスタンスを参照する変数の_instances_を探しています。 – VolkerK

答えて

9

あなたは存在するすべてのオブジェクトの配列を取得するためにget_defined_varsを呼び出し、その後、各1(コードテストし、それが動作するはずではない)のクラス名を取得するためにget_classを使用することができます。

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

FYI、あなたが「宣言されたクラス」と呼ぶものは、「オブジェクト」としてよく知られています。

2番目の質問はできません。例えば、テイク:

$hello1 = $hello2 = new hello(); 

を今、私はinstance_name呼び出した場合、それはhello1」または 'hello2' を返す必要がありますか?

+0

Trueで、必要ならばis_objectと結合して、どのヴァールがオブジェクトであるかを確認します。 – Petrunov

+0

ありがとう、get_defined_vars()を調べていましたが、オブジェクトもそこにあることはわかりませんでした。ありがとう。 – Yifan

関連する問題