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
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
应该在构造函数中为属性添加默认值。在声明属性时添加默认值只是 PHP 中的一个非面向对象的事情,它使开发人员的生活更容易,但是 - 正如您所看到的 - 它还没有得到很好的支持。
解决方案:
class Foo
{
private $var;
public function __construct()
{
$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 定义语言语法的方式。
PHP 不支持计算值,即使从技术上讲这两个值在编译时都可以知道。
只是因为你不能在 PHP 中。您不能在 PHP 中评估属性分配和声明。不知道为什么以这种方式实施。