如果 是一个类,则可以直接通过 访问它。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
如果您采用类文本方法,那么在 PHP5.2.8 中使用循环时,我在使用范围解析运算符时会遇到语法错误。foreach
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
简而言之,一旦我们有更多关于您想做什么的信息,我们就可以继续提供更好的答案。