Si A
eine Klasse ist, können Sie direkt auf sie zugreifen über A::$strName
.
class A {
public static $strName = 'A is my name';
}
echo A::$strName; // outputs "A is my name"
Aktualisierung:
Je nachdem, was Sie in Ihrem Array haben, ob es das ist, was ich gerne als Klassenobjekte o Klasse Literale könnte ein Faktor sein. Ich unterscheide diese beiden Begriffe durch,
$objClasses = array(new A(), new B()); // class objects
$myClasses = array('A','B'); // class literals
Wenn Sie den Ansatz der Klassenliterale wählen, dann verwenden Sie eine foreach
Schleife mit PHP5.2.8 erhalte ich einen Syntaxfehler, wenn ich die Umfangsauflösungsoperator .
foreach ($myClasses as $class) {
echo $class::$strName;
//syntax error, unexpected '::', expecting ',' or ';'
}
So dann dachte ich über die Verwendung der Klasse Objekte Ansatz, aber der einzige Weg, ich könnte tatsächlich die statische Variable war mit einer Instanz eines Objekts und mit der self
Schlüsselwort wie folgt,
class A {
public static $strName = 'A is my name';
function getStatic() {
return self::$strName;
}
}
class B {
public static $strName = 'B is my name';
function getStatic() {
return self::$strName;
}
}
Und rufen Sie diese Methode dann bei der Iteration auf,
foreach($objClasses as $obj) {
echo $obj->getStatic();
}
Warum wird dann die Variable static
überhaupt? Damit wird die ganze Idee des Zugriffs auf eine Variable zunichte gemacht, ohne dass ein Objekt instanziert werden muss.
Kurz gesagt, sobald wir mehr Informationen darüber haben, was Sie tun möchten, können wir Ihnen bessere Antworten geben.
0 Stimmen
Ich denke, Sie wollen eine Instanz der Klasse A in das Array nicht das Zeichen 'A' (die nicht ein statisches Mitglied namens strName) haben
0 Stimmen
Gut ich habe eine Liste der Klasse in einem Array, die ich durchlaufen müssen
0 Stimmen
Der Aufruf eines statischen Mitglieds über eine Methode ist besser als die Reflexion gewählt worden.