Java 静态属性访问PHP中的静态属性

Java 静态属性访问PHP中的静态属性,java,php,parsing,properties,static,Java,Php,Parsing,Properties,Static,在创建应用程序时,我遇到了一种情况,即我有一个静态变量 比如说: public static name = "abdul ahad"; 接下来,在某个地方,我有另一个名为user的静态变量,它访问上面定义的静态变量名 public static user = self::$name; 注意:这些属性是同一类的成员 执行此操作时,会出现以下错误 分析错误:语法错误,意外的“$XXX”(T_变量),在第xx行的C:\xxxx\XXX\XXX.php中需要标识符(T_字符串)或类(T_类) 同样的

在创建应用程序时,我遇到了一种情况,即我有一个静态变量

比如说:

public static name = "abdul ahad";
接下来,在某个地方,我有另一个名为user的静态变量,它访问上面定义的静态变量名

public static user = self::$name;
注意:这些属性是同一类的成员

执行此操作时,会出现以下错误

分析错误:语法错误,意外的“$XXX”(T_变量),在第xx行的C:\xxxx\XXX\XXX.php中需要标识符(T_字符串)或类(T_类)

同样的概念适用于Java,如下所示

public static int i = 5;
public static int j = Main.i;   

public static void main(String[] args) {

    System.out.println(String.format("Static j was : %d", Main.j));

所以,我想知道这在PHP中是否可行&我在语法方面犯了什么错误。如果不是,那么您是否愿意解释原因?

静态声明在编译时进行计算,因此您无法使用另一个变量初始化静态属性(不管它是否是静态的)

从:

与任何其他PHP静态变量一样,静态属性只能在PHP5.6之前使用文本或常量初始化;不允许使用表达式。在PHP5.6和更高版本中,同样的规则适用于表达式:一些有限的表达式是可能的,只要它们可以在编译时进行计算

注意:您发布的错误消息很可能来自您未与我们共享的某些代码。此外,代码中还有另一个错误:

public static user = self::$name;
//            ^
// the actual error
它应产生以下错误消息:

PHP分析错误:语法错误,意外的“用户”(T_字符串),应为

PHP中的每个变量必须具有
$
(美元符号)前缀,因此正确的属性声明应如下所示:

public static $user = self::$name;
但是,正如我在上面所写的,您不能使用变量初始化静态属性,因此它将产生以下错误:

PHP致命错误:常量表达式中包含无效操作

为了便于比较,您发布的错误消息如下:

分析错误:语法错误,意外的“$XXX”(T_变量),在


不,不能基于PHP中的另一个属性初始化属性。请参见,我可以基于另一个属性初始化属性。是的。如int a=5;int b=a;这是允许的。但是静态变量会出现问题。你的线程链接不会处理静态内容。它是否是静态的没有任何区别。类属性只能初始化为常量或基本表达式(从PHP5.6开始)。您不能引用任何其他变量(全局变量、属性等),也不能使用PHP7.1