2012-12-18 258 views
-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

5線上面的例子中,你的鏈接頁面上:'//無效屬性聲明:' – Yoshi

+0

頁面鏈接搞笑說這不能做 – 2012-12-18 19:37:08

+2

,你必須閱讀_entire_例如 – thescientist

回答

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定義。

0

PHP不支持計算值,即使這兩個值在技術上可以在編譯時是已知的。

0

僅僅因爲你不能在PHP中。您不能在PHP中使用聲明來評估屬性分配。不知道爲什麼這樣實施。

1

爲屬性添加默認值應在構造函數內完成。在聲明屬性時添加默認值只是一個非OO的東西,它會在PHP中滾動以使開發人員的生活變得更容易,但是 - 正如您所看到的 - 它還不被支持。

解決辦法:

class Foo 
{ 
    private $var; 

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