为什么我不能在类属性声明中做数学?

时间:2012-12-18 19:35:09

标签: php properties

http://php.net/manual/en/language.oop5.properties.php显示以下示例,但对我来说失败了。

class SimpleClass{
   private $var3 = 1+2;
}

Parse error: syntax error, unexpected '+', expecting ',' or ';'....

任何想法为什么?

php version 5.4.9

4 个答案:

答案 0 :(得分:1)

应在构造函数内部添加属性的默认值。在声明属性时添加默认值只是一个非易用的东西,可以在PHP中滚动,让开发人员更容易上线,但是 - 正如你所看到的那样 - 它还没有得到很好的支持。

解决方案:

class Foo
{
    private $var;

    public function __construct()
    {
        $this->var = 2 + 3
    }
}

答案 1 :(得分:1)

文档从不声明它是有效的属性声明。它特别声明了一个无效的示例。

直接来自您的链接

<?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定义语言语法的方式。

答案 2 :(得分:0)

PHP不支持计算值,即使在编译时技术上可以知道这两个值。

答案 3 :(得分:0)

只是因为你不能用PHP。您无法使用PHP中的声明评估属性分配。不知道为什么会这样实现。