2010-07-29 22 views
0

想象我有這個常數PHP:如何PHP使用常數(定義)

define('APP_PATH', str_replace('//', '/', str_replace('\\', '/', dirname(__FILE__) . '/'))); 

當我在我的應用程序中使用APP_PATH,並PHP執行代碼(dirname,和兩個str_replace__FILE__)各時間或PHP執行一次代碼並將結果存儲在APP_PATH?我希望我很清楚:)

這個問題適用於PHP 5.1.0+。

回答

7

它應該在它被定義的時候完成一次。

修訂 對於文檔:define() - constants

從文檔:

常量是一個簡單的值的標識符(名稱)。顧名思義,這個值在腳本執行期間不能改變(除了魔術常量,它們實際上並不是常量)。常量默認情況下區分大小寫。按照慣例,常量標識符總是大寫。

如果你想了解更多關於常量的信息,請閱讀文檔,這裏有很好的解釋,可能還有使用示例。

+3

否則,常數值會改變(!)從文件到文件。 – Mchl 2010-07-29 19:49:20

+0

有沒有文件記錄的地方? – AlexV 2010-07-30 15:40:29

+1

很多地方。查看我添加的更新信息以鏈接PHP手冊,該手冊記錄了常量。至於Mchl所指的是什麼,這不一定是真的。一旦定義了一個常量,它就不應該由它的性質來重新定義,如果你這樣做了,它會拋出一個通知錯誤。 (請參閱上面的引用摘錄)但常量應該保持...良好不變。 – 2010-07-30 17:05:12

1

它執行一次並將結果存儲在APP_PATH中。從那時起,APP_PATH是一個標量值。它不像一個計算/函數或任何東西的句柄。

1

將Tt作爲結果存儲在單個請求中,在define的時刻。因此「不變」。下一個請求/腳本調用將再次運行代碼,因此請求之間可能會不一致。

2

如果你想有一個變量,而不是一個功能,你可以使這是一個匿名函數

$APP_PATH=function(){ return str_replace('//', '/', str_replace('\\', '/', dirname(__FILE__) . '/') } 

$APP_PATH=function($file){ return str_replace('//', '/', str_replace('\\', '/', dirname($file) . '/') } 

,你可以用$ APP_PATH [不變量]或$ APP_PATH(調用FILE) 取決於你想要做什麼