PHP OOP静态属性语法错误

Sha*_*son -1 php static-members

为什么不呢

public static $CURRENT_TIME = time() + 7200;
Run Code Online (Sandbox Code Playgroud)

工作(错误):

解析错误:语法错误,意外'('

class Database {
  public static $database_connection;

  private static $host = "xxx";
  private static $user = "xxx";
  private static $pass = "xxx";
  private static $db = "xxx";

  public static function DatabaseConnect(){
    self::$database_connection = new mysqli(self::$host,self::$user,self::$pass,self::$db);
    self::$database_connection->query("SET NAMES 'utf8'");
    return self::$database_connection;
  }
}
Run Code Online (Sandbox Code Playgroud)

确实有效.

我是OOP的新手,我很困惑.

Jon*_*art 7

您不能使用非常量表达式初始化任何成员变量(属性).换句话说,在您声明它的地方没有调用函数.

PHP手册:

此声明可能包括初始化,但此初始化必须是常量值 - 也就是说,它必须能够在编译时进行评估,并且必须不依赖于运行时信息才能进行评估.

我能给出的最佳答案为什么?因为静态字段初始值设定项实际上并不是在任何类型的上下文中运行.调用静态方法时,您处于该函数调用的上下文中.设置非静态属性时,您位于构造函数的上下文中.设置静态字段时,您的上下文是什么?