PHP zeigen Namen aller angegebenen Klassen?
-
03-07-2019 - |
Frage
Lets sagen, ich habe diesen Code:
<?php
class hello {
var $greeting = "hello";
function hello(){
echo $this->greeting;
return;
}
}
$hello1 = new hello;
$hello2 = new hello;
$hello4 = new hello;
?>
Wie bekomme ich es alle Namen von instanzierte Objekten zu Echo (und wenn möglich ihre jeweilige Klasse), so dass es echos (möglicherweise in einem Array) „hello1 => hallo, hello2 => hallo, hello4 => hallo “.
Wenn dies nicht möglich ist, gibt es eine Möglichkeit, den Namen der Instanz zu sagen, von innerhalb der Klasse, so etwas wie echo instance_name ($ this); würden Sie mich „hello1“. Danke.
Lösung
Sie könnten get_defined_vars
nennen eine Reihe von allen Objekten vorhanden ist, zu erhalten und dann get_class
verwenden, um die Klassennamen für jeden zu bekommen (Code nicht getestet, aber es sollte funktionieren):
$vars = array();
foreach (get_defined_vars() as $var) {
$vars[$var] = get_class($var);
}
FYI, was Sie rufen eine „deklarierte Klasse“ als bekannteren „Objekt“.
Ihre zweite Frage ist nicht möglich. Nehmen wir zum Beispiel:
$hello1 = $hello2 = new hello();
Nun, wenn ich instance_name
nennen, sollte es zurückgeben 'hello1' oder 'hello2'?