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
答案 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中的声明评估属性分配。不知道为什么会这样实现。