2016-09-14 56 views
-2

這是我的代碼:在php類中變量是一個等於二的變量?

class Config { 
static public $site = 'http://localhost/site/'; 
static public $style = $site . 'css/style.css'; 

// ... 
} 

這不是爲我工作。我得到白色屏幕。

class Config { 
    static public $site = 'http://localhost/site/'; 
    static public $style = 'http://localhost/site/css/style.css'; 

    // ... 
    } 

這是工作。我得到設計和代碼。工作得很好。我的問題是爲什麼?

+0

你能迴應'$ style'並與我們分享嗎? – Mureinik

+2

[PHP文檔](http://php.net/manual/en/language.oop5.properties.php) - '這個聲明可能包含一個初始化,但是這個初始化必須是一個常量值 - 也就是說,它必須能夠在編譯時進行評估,並且不能依賴運行時信息進行評估。「....任何非常量值的串聯,其性質是運行時評估 –

+0

也不會$網站。 'css/style.css';''無論如何都是有效的;它需要是'self :: $站點。 'css/style.css';' –

回答

0

這是不可能的:

static public $style = $site . 'css/style.css'; 

表達式不能用於初始化類的值。只允許不變的值。這是您在構造函數中必須執行的操作,但由於它們是靜態值,因此無法保證在您嘗試訪問這些靜態值之前該對象將被初始化。

class foo { 
    public $foo = 1; // ok 
    public $bar = 1+1; // ok only in PHP 5.6+ 
    public $baz = $this . $that; // not valid in any version of PHP 

唯一一次你可以使用表達式(在PHP5.6 +)是如果結果值可以在編譯時計算。所以1+1沒問題,因爲可以在編譯時處理。但$this . $that只能在運行時確定,因此是非法的。

+0

我明白了。謝謝。也許那樣更好。 –