2012-08-10 34 views
2
const 
    SOME_PATH = __DIR__ . '/blabla.bla'; 

不工作,我得到一個解析錯誤:不能在常量中使用字符串連接?

expecting ','' or ';''

WTF!?

+0

但我希望它是類常量:( – ellabeauty 2012-08-10 13:38:28

+0

不可能的,因爲這不是在解析執行運行時間 – 2012-08-10 13:39:04

+0

你沒有提到這是在一個班級裏面 – Matt 2012-08-10 13:39:28

回答

2

問題不是常量,而是您將類變量定義爲使用非文字的字符串。

const SOME_PATH = __DIR__; 

是好的,但一旦你開始使用串聯,解析器將引發噓聲像契合。

這是同樣的原因,這個工程:

class myClass { 
    public $something = "something"; 
} 

但這並不:

class myClass { 
    public $something = "some" . "thing"; 
} 
+0

'__DIR__'不是*文字* * – deceze 2012-08-10 13:52:57

+0

@decereé你是對的,但我認爲*它是允許的。不是100%確定。 – Matt 2012-08-10 13:54:19

+1

是的,因爲它是一個*常數值*。這是標準。 – deceze 2012-08-10 13:55:31

5

聲明類常量或屬性時,只能使用常量值。沒有變量表達式。

+0

OP不使用變量表達式。 OP正在使用一個常量和一個文字的連接。問題是*連接*。 – Matt 2012-08-10 13:44:42

+0

正試圖找到「恆定值」的反義詞,這顯然很難得到正確的。 :) – deceze 2012-08-10 13:49:15