如果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
?它破坏了在不需要实例化对象的情况下访问变量的整个想法。
简而言之,一旦我们获得有关您想要做什么的更多信息,我们就可以继续提供更好的答案。