1
class Person {
  public static function ShowQualification() {
  }
}

class School {
  public static $Headmaster = new Person(); // NetBeans complains about this line
}

为什么这是不可能的?

我希望能够像这样使用它

School::Headmaster::ShowQualification();

..没有实例化任何类。我该怎么做?

更新:好的,我理解了为什么部分。有人可以解释 HOW 部分吗?谢谢 :)

4

2 回答 2

3

文档中,

“与任何其他 PHP 静态变量一样,静态属性只能使用文字或常量进行初始化;不允许使用表达式。”

new Person()不是文字或常量,所以这不起作用。

您可以使用解决方法:

class School {
  public static $Headmaster;
}

School::$Headmaster = new Person();
于 2010-05-29T06:43:47.610 回答
-2

new Person()是一个操作,而不是一个值。

与任何其他 PHP 静态变量一样,静态属性只能使用文字或常量进行初始化;不允许表达。因此,虽然您可以将静态属性初始化为整数或数组(例如),但您不能将其初始化为另一个变量、函数返回值或对象。

http://php.net/static

您可以将 School 类初始化为一个对象:

class School {
  public static $Headmaster; // NetBeans complains about this line
  public function __construct() {
    $this->Headmaster = new Person();
  }
}

$school = new School();
$school->Headmaster->ShowQualification();
于 2010-05-29T06:45:09.557 回答