2013-04-04 28 views
2

我有以下的測試代碼:PHP - 在字符串中打印命名空間常量?

namespace Test { 
    const ONE = 50; 

    class A { 
     const TWO = 5; 

     public function pA($string) { 
      return $string; 
     } 
    } 

    $a = new A(); 
    print $a->pA($a::TWO); 
    print "This is a string: {$a->pA($a::TWO)}"; 
    print "This is a namespace constant: " . ONE; 
    print "This is a namespace constant: " . \Test\ONE; 
} 

所有這些例子都工作,但它不是我要找的。

我可以像前面兩個例子一樣使用字符串組合來表示常量嗎?我嘗試了很多組合,如"${\Test\B}""${B}""${\B}",但迄今爲止,沒有運氣。

也許這是不可能的,我正在過度使用它,但無論如何...有沒有辦法做到這一點?

回答

2

這不起作用。您可以使用雙引號字符串中的$變量,函數或對象方法調用,但不能使用常量。請參閱PHP string parsing documentation。你會發現很多有用的例子。

+0

我已經害怕我會找到這樣的答案哈哈,但沒關係。我只想知道它是否可能,現在我知道我應該用點符號來組合我的字符串,而不是組成完整的字符串。感謝您的回答:) – 2013-04-04 14:08:50

+1

是的,不幸的是這是答案。但是我目前沒有看到爲什麼卷積語法'{\ Test \ ONE}'不應該工作。也許應該考慮向PHP開發團隊提出變更請求。 – hek2mgl 2013-04-04 14:09:39