Ответ 1
Если 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 мне присваивается синтаксическая ошибка при использовании оператора scope resolution.
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
? Он побеждает всю идею доступа к переменной без необходимости создания экземпляра объекта.
Короче говоря, как только у нас будет больше информации о том, что вы хотели бы сделать, мы можем продолжить и предоставить лучшие ответы.