基本上,我正在實現自己的緩存系統。理想情況下,它看起來像這樣:PHP緩存結構(跳轉代碼塊,如果HIT)
$CACHE->start($name);
//CODE
$CACHE->end();
但是,這是一個聖盃,我不希望找到。基本上,$ CACHE-> start()檢查緩存是命中還是未命中,並且它是否是命中,它跳過// CODE直到$ CACHE-> end()。
到目前爲止,我已經來了,最好是:
if ($CACHE->start($name)) {
//CODE
}
$CACHE->end();
由於PHP支持匿名函數,我在想:
$CACHE->make($name, function() {
//CODE
});
但這段代碼有問題的代碼是不是在相同的變量範圍。任何機會繞過?
更新:我已經切換到紅寶石,它允許將塊傳遞給一個函數,完成這項任務。
還有一個想法是用GOTO語句,但就是這麼難看,我不打算使用。 –
您可以通過將'use($ var1,$ var2,...)'添加到匿名函數定義來訪問特定變量,但是無法使父範圍中的所有變量都可用。 –
if($ cache-> start()){....} $ cache-> end();可能和它一樣好。 Zend Framework包含一個緩存,該緩存通過假設頁面的其餘部分是緩存內容的一部分來跳過$ cache-> end()。雖然不適合所有情況。 – rrehbein