我在Laravel中有这个非常简单的功能,
public function getImage($slug){
// This return an error
$cached = Cache::remember('Test', 10, function(){
$images = $this->allImages();
// Undefined var $slug
return file_get_contents($images[$slug]['image-url']);
});
// This works
// $images = $this->allImages();
// $cached = file_get_contents($images[$slug]['image-url']);
$headers = [
'Content-Type' => 'image/jpeg',
'Cache-Control' => 'max-age=600'
];
return Response::make($cached, 200, $headers);
}
这可能是一个愚蠢的问题,但是我已经很长时间没有使用PHP了,绕开了为什么$ slug未定义的原因?
当您创建一个匿名函数/闭包,然后传递给Cache :: remember()时,您需要从父作用域中明确列出所有应在该函数作用域中使用的变量。
use语句用于此操作-以下代码应正常工作:
$cached = Cache::remember('Test', 10, function() use($slug) {
$images = $this->allImages();
// Undefined var $slug
return file_get_contents($images[$slug]['image-url']);
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句