基本上,我正在实现自己的缓存系统。理想情况下,它看起来像这样:
$CACHE->start($name);
//CODE
$CACHE->end();
但这是我不希望找到的圣杯。基本上,$CACHE->start() 检查缓存是命中还是未命中,无论是命中,它都会跳过 //CODE 直到 $CACHE->end()。
到目前为止,我所取得的最好成绩是:
if ($CACHE->start($name)) {
//CODE
}
$CACHE->end();
由于 PHP 支持匿名函数,我在想:
$CACHE->make($name, function() {
//CODE
});
但是这段代码有个问题,就是代码不在同一个变量范围内。有机会绕过吗?
更新:我已经切换到 ruby,它允许将块传递给一个函数,非常适合这个任务。