Si A
est une classe, vous pouvez y accéder directement par l'intermédiaire de la fonction A::$strName
.
class A {
public static $strName = 'A is my name';
}
echo A::$strName; // outputs "A is my name"
Mise à jour :
En fonction de ce que vous avez dans votre tableau, que ce soit ce que j'aime définir comme étant objets de la classe o classe littérale pourrait être un facteur. Je distingue ces deux termes par,
$objClasses = array(new A(), new B()); // class objects
$myClasses = array('A','B'); // class literals
Si vous optez pour l'approche des littéraux de classe, alors l'utilisation d'un foreach
avec PHP5.2.8, j'obtiens une erreur de syntaxe lors de l'utilisation de la fonction opérateur de résolution de la portée .
foreach ($myClasses as $class) {
echo $class::$strName;
//syntax error, unexpected '::', expecting ',' or ';'
}
J'ai donc envisagé d'utiliser l'approche des objets de classe, mais la seule façon de produire la variable statique était d'utiliser une instance d'un objet et d'utiliser l'attribut self
mot-clé comme ceci,
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;
}
}
Et ensuite invoquer cette méthode lors de l'itération,
foreach($objClasses as $obj) {
echo $obj->getStatic();
}
Et à ce moment-là, pourquoi déclarer la variable static
du tout ? Cela va à l'encontre de l'idée même d'accéder à une variable sans avoir besoin d'instancier un objet.
En bref, une fois que nous aurons plus d'informations sur ce que vous souhaitez faire, nous pourrons continuer et fournir de meilleures réponses.