2011-10-09 74 views
0

我經歷一個Joomla的書,我MVC模式的章節中遇到下列一段代碼來的?什麼時候銷燬?終身靜態變量

如果在請求的生命週期中它是活着的,那麼聲明$instances靜態沒有意義,因爲此代碼將運行一次。
如果它在用戶會話期間還活着,PHP引擎如何知道這一點?

+1

我想這應該是從函數調用到執行結束(因爲它總是可用)。除非你毀掉它 – galchen

回答

0

如果是請求的一生,然後宣佈 $靜態的沒有意義的實例中活着,因爲該代碼將運行 一次。

是的,靜態變量只存在於請求期間。如果創建代價昂貴,或者如果有多個副本會導致問題,那麼將對象存儲在靜態變量中是常見的設計模式。

這個函數不一定只調用一次 - 它可能會被多次調用,至少在某些頁面/某些模塊中會被調用。

1

通過代碼的外觀,變量持續到腳本完成執行。

因爲您無法從該函數外部訪問該變量,也沒有調用該變量的unset(),所以直到腳本執行結束時纔會被銷燬。