Если A
является классом, вы можете получить к нему доступ напрямую через A::$strName
.
class A {
public static $strName = 'A is my name';
}
echo A::$strName; // outputs "A is my name"
Обновление:
В зависимости от того, что у вас внутри массива, то, что мне нравится определять как объекты класса или литералы класса , может быть фактором. Я различаю эти два термина,
$objClasses = array(new A(), new B()); // class objects
$myClasses = array('A','B'); // class literals
Если вы используете подход литералов классов, то при использовании цикла foreach
с PHP5.2.8 мне выдается синтаксическая ошибка при использовании оператора разрешения области действия .
foreach ($myClasses as $class) {
echo $class::$strName;
//syntax error, unexpected '::', expecting ',' or ';'
}
Итак, я подумал об использовании подхода объектов класса, но единственный способ на самом деле вывести статическую переменную был с экземпляром объекта и с использованием ключевого слова self
, например,
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;
}
}
И затем вызывать этот метод при итерации,
foreach($objClasses as $obj) {
echo $obj->getStatic();
}
Что в этот момент зачем вообще объявлять переменную static
? Он отрицает всю идею доступа к переменной без необходимости создания экземпляра объекта.
Короче говоря, как только мы получим больше информации о том, что вы хотели бы сделать, мы сможем продолжить и дать лучшие ответы.