3

このコードがあるとしましょう:

<?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」を取得します。ありがとう。

4

1 に答える 1

9

を呼び出しget_defined_varsて存在するすべてのオブジェクトの配列を取得し、次に使用get_classして各オブジェクトのクラス名を取得できます (コードはテストされていませんが、動作するはずです)。

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

参考までに、「宣言されたクラス」と呼ばれるものは、「オブジェクト」としてよく知られています。

2 番目の質問はできません。たとえば、次のようにします。

$hello1 = $hello2 = new hello();

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

于 2009-05-04T21:52:08.903 に答える