This question讓我想起了裸露的琴絃。在PHP中是否有任何合法用途?
當PHP看到一個沒有用引號括起來的字符串時,它首先檢查它是否是一個常量。如果不是,它只是假定它是一個字符串,並繼續。因此,舉例來說,如果我有
echo $foo[bar];
如果有一個叫巴恆它使用的數組鍵,但如果沒有,那麼它把酒吧作爲裸字符串,所以它的行爲就像
echo $foo["bar"];
如果在將來的某個日期添加一個具有相同名稱的常量,這可能會導致各種問題。
我的問題是,是否有任何情況下,它使用裸字符串實際上是有意義的?
+1 ,我同意你Pekka的觀點,並且僅僅因爲PHP足夠寬容,可以將裸露的字符串轉換爲文字,並不意味着你應該養成使用它的習慣。 – 2010-03-09 01:17:19
@Anthony true,加上(我編輯了我的答案)大量地破壞了常量的使用 - 你永遠不能真正依賴它們的設置,並且必須使用'defined'來檢查它們。如果一個常量沒有被定義,正確的方法是拋出一個致命的錯誤。 – 2010-03-09 01:19:58
那麼,你只需報告警告級錯誤並警惕地修復它們。但它仍然是一個PITA。 – 2013-09-04 20:23:20