Php 为什么可以';我不能在类属性声明中进行数学运算吗?

Php 为什么可以';我不能在类属性声明中进行数学运算吗?,php,properties,Php,Properties,显示了以下对我来说失败的示例 class SimpleClass{ private $var3 = 1+2; } 分析错误:语法错误,意外的“+”,应为“,”或“;” 你知道为什么吗 php版本5.4.9php不支持计算值,即使这两个值在编译时在技术上都是已知的。只是因为在php中不能。在PHP中,不能长时间使用声明计算属性赋值。不确定为什么要这样实现。为属性添加默认值应该在构造函数内部完成。在声明属性时添加默认值只是PHP中使用的一种非OO方式,可以让开发人员更轻松地使用它,但正如您所

显示了以下对我来说失败的示例

class SimpleClass{
   private $var3 = 1+2;
}
分析错误:语法错误,意外的“+”,应为“,”或“;”

你知道为什么吗


php版本5.4.9

php不支持计算值,即使这两个值在编译时在技术上都是已知的。

只是因为在php中不能。在PHP中,不能长时间使用声明计算属性赋值。不确定为什么要这样实现。

为属性添加默认值应该在构造函数内部完成。在声明属性时添加默认值只是PHP中使用的一种非OO方式,可以让开发人员更轻松地使用它,但正如您所看到的,它还没有得到很好的支持

解决方案:

class-Foo
{
私有$var;
公共函数构造()
{
$this->var=2+3
}
}

文档从未声明它是有效的属性声明。它特别指出它是一个无效的例子

直接从你的链接

<?php
class SimpleClass
{
   // invalid property declarations:
   public $var1 = 'hello ' . 'world';
   public $var2 = <<<EOD
hello world
EOD;
   public $var3 = 1+2;
   public $var4 = self::myStaticMethod();
   public $var5 = $myVar;

   // valid property declarations:
   public $var6 = myConstant;
   public $var7 = array(true, false);

   // This is allowed only in PHP 5.3.0 and later.
   public $var8 = <<<'EOD'
hello world
EOD;
}
?>


这就是PHP语言语法的定义方式。

5行以上的示例,在您链接的页面上:
//无效的属性声明:
有趣的页面链接说这不能做你必须阅读整个示例哈,facepalm,我阅读了页面中除此之外的每一行。一定没有注意到橙色的评论。