2011-05-08 59 views
5

非常簡單;我已經閱讀了文檔,但也許我只是有點解釋困惑。PHP中的靜態變量字符串解析

class Test{ 
    public static $var = 'world'; 
} 

echo "hello {Test::$var}"; // only parses $var in current scope, which is empty 

有沒有什麼辦法在這裏實現所需的功能?我開始猜測不,因爲我嘗試了一些排列而沒有成功。

澄清:我試圖用PHP的變量解析,而不是連接。很顯然,如果所期望的方法是不可能的,我會訴諸連接,儘管我希望是這樣。

回答

8

變量解析雙引號中的字符串僅適用於 「變量表達式」。這些必須始終以字節序列{$開頭。你的靜態標識參考,但是始於{T hencewhy PHP解析對您的雙引號下一$而忽略Test::

你需要利用一些祕籍那裏。無論是使用NOP包裝函數:

$html = "htmlentities"; 
print "Hello {$html(Test::$var)}"; 

或預先定義的類名作爲變量:

$Test = "Test"; 
print "Hello {$Test::$var}"; 

恐怕還有以其他方式做到這一點沒有原生的方式。

+0

謝謝**馬里奧**;我以前很怕那個;缺少對我所需功能的本地支持。我將不得不繞過來接近一些東西。 – Dan 2011-05-08 21:20:56

0

你總是可以將回聲分解成小塊。

class Test{ 
    public static $var = 'world'; 
} 

echo "hello ", Test::$var; 
0

這適用於字符串連接運算符

echo "hello ".Test::$var; 

編輯

注():函數,方法調用,靜態 類變量和類常量 內{$}自PHP 5開始工作。但是,訪問的值將被解釋爲 作爲定義字符串的範圍 中變量的名稱。使用 單個花括號({})將不起作用 用於訪問 函數或方法的返回值或 類常量或靜態類 變量的值。

Source通過在PHP的This answer

+0

謝謝** Gazler **;我不想連接,試圖利用變量解析。 – Dan 2011-05-08 20:25:20

+0

我不相信這是可能的。請參閱此問題:http://stackoverflow.com/questions/1267093/php-static-variables-in-double-quotes特別是發佈的鏈接作爲頂級答案,我在我的編輯中引用了該答案。 – Gazler 2011-05-08 20:29:15