我不明白全局上下文和类上下文之间变量分配的不同处理背后的基本原理:
$var1 = "a" . "b"; # PHP syntax o.k.
class myClass {
private $var2 = "a" . "b"; # PHP Parse error: syntax error, unexpected '.', expecting ',' or ';'
}
P.S.:属性的可见性(私有(private)/ protected /公共(public))不起作用。
最佳答案
这不是“类上下文中的变量赋值”。 private $var
为该类声明了一个属性,并且您还为其指定了一个默认值。您在此处声明类的结构,这与过程代码中的变量赋值不同。类结构由解析器解析并由编译器编译,属性的默认值在此解析/编译步骤中建立。编译器不执行任何过程代码;它只能处理常数值。
因此,您不能声明具有需要评估的默认值的类属性,因为处理类声明的 PHP 部分,解析器/编译器,确实不是评估。
关于Php:无法在声明中分配属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16457912/