我昨天在班上发现了一个奇怪的问题 - 希望你知道一些答案。考虑这样一个类:
class Person {
public $height = 90;
public $weight = $this->height * 0.8;
}
此类返回错误“Parse error:syntax error,unexpected T_VARIABLE”,似乎我无法在类中声明变量本身的变量。我是否只能将“静态”值设置为类中的变量(我的意思是静态,如直接声明为字符串或int无静态,如“static $ var ='xyz'”;为什么会发生这种情况?
谢谢, Kalreg。
答案 0 :(得分:5)
目前,在PHP中定义默认properties值时,只能使用常量表达式。这意味着您不能使用任何将在运行时评估的内容。由于$this
是指动态实例值,因此它显然是运行时的,并且不能用于此类定义。
答案 1 :(得分:0)
属性在类定义中不能包含动态值,但如果需要,可以在__construct方法中定义权重:
class Person {
public $height = 90;
public $weight;
public function __construct()
{
$this->weight = $this->height * 0.8;
}
}