在PHP中初始化静态成员
class Person {
public static function ShowQualification() {
}
}
class School {
public static $Headmaster = new Person(); // NetBeans complains about this line
}
为什么不能这样做?在PHP中初始化静态成员
我希望能够利用这个像
School::Headmaster::ShowQualification();
..无任何实例类。我该怎么做?
更新:好吧,我明白了为什么。有人可以解释如何部分?谢谢:)
从the docs,
“像任何其他PHP静态变量, 静态属性可以仅 使用文字或 恒定初始化;表达式不 不允许”。
new Person()
不是一个文字或常量,所以这是行不通的。
您可以使用一个变通:
class School {
public static $Headmaster;
}
School::$Headmaster = new Person();
new Person()
是操作,而不是一个值。
像任何其他PHP静态变量, 静态属性可以仅 使用文字或 恒定初始化;表达式是不允许的。 因此,尽管您可以将静态 属性初始化为整数或数组(对于 实例),但您可能不会将其初始化为 为其他变量,返回值为函数 或对象。
您可以初始化学校类的一个对象:
class School {
public static $Headmaster; // NetBeans complains about this line
public function __construct() {
$this->Headmaster = new Person();
}
}
$school = new School();
$school->Headmaster->ShowQualification();
嗨,我不想实例化。我只想使用它们,如Class1 :: Member1 :: SubMember。 – Senthil 2010-05-29 06:57:19
-1。你不能使用$ this作为静态变量。 – 2010-05-29 08:34:44
您不能使用$ this作为静态变量,并且没有任何意义实例化对象以访问静态变量。 – 2013-03-12 20:52:48
静态属性也被称为类的属性相反的对象属性。你为什么只想要*所有*学校的*校长? – Gumbo 2010-05-29 06:49:47
请不要在语义上看它。我无法发布我的专有代码。我只是想到了一个愚蠢的例子。不妨将它们命名为abc和xyz:D – Senthil 2010-05-29 06:54:10