-1

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

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

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

任何想法为什么?

php 版本 5.4.9

4

4 回答 4

1

应该在构造函数中为属性添加默认值。在声明属性时添加默认值只是 PHP 中的一个非面向对象的事情,它使开发人员的生活更容易,但是 - 正如您所看到的 - 它还没有得到很好的支持。

解决方案:

class Foo
{
    private $var;

    public function __construct()
    {
        $this->var = 2 + 3
    }
}
于 2012-12-18T19:38:42.727 回答
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 定义语言语法的方式。

于 2012-12-18T19:38:50.203 回答
0

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

于 2012-12-18T19:36:43.083 回答
0

只是因为你不能在 PHP 中。您不能在 PHP 中评估属性分配和声明。不知道为什么以这种方式实施。

于 2012-12-18T19:37:15.957 回答