PHP引用静态变量中的其他静态变量

PHP引用静态变量中的其他静态变量,php,Php,如何在另一个静态变量中引用静态变量 class Test{ public static $role = 3; public static $factory = ['role' => self::$role]; } print_r(Test::$factory); 链接: 错误:PHP解析错误:语法错误,意外的“$role”(T_变量),第4行的/home/PpylVI/prog.PHP中需要标识符(T_字符串)您无法将在运行时计算的内容分配给类属性,例如,

如何在另一个静态变量中引用静态变量

  class Test{
     public static $role = 3;
     public static $factory = ['role' => self::$role];
  }
  print_r(Test::$factory);
链接:


错误:
PHP解析错误:语法错误,意外的“$role”(T_变量),第4行的/home/PpylVI/prog.PHP中需要标识符(T_字符串)

您无法将在运行时计算的内容分配给类属性,例如,在本例中,前一个变量的值

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

摘自手册

这两项工作:

<?php

   class Test{
    const ROLE = 3;
    public static $factory = ['role' => self::ROLE];
  }
  print_r(Test::$factory);

/*Array
(
    [role] => 3
)
*/


  class Test2{
    public static $factory = ['role' => 3];
  }
  print_r(Test2::$factory);
/*
Array
(
    [role] => 3
)
*/

应该是
self::$role
const role=3
与在任何上下文中引用静态变量的方式相同。对我来说,这看起来像一个微不足道的打字错误,你应该抓住它!抱歉,我尝试了self::$role。但它就是不起作用。编辑、编译并亲自查看。完美答案。我注意到,如果我在子类中声明相同的常量,它们就不会发生冲突。谢谢