Php 调用fn时未定义变量

Php 调用fn时未定义变量,php,laravel,laravel-5,Php,Laravel,Laravel 5,我在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

我在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了,当您创建一个匿名函数/闭包,稍后传递给缓存::记住()您需要明确列出父作用域中该函数作用域中可用的所有变量

use语句用于此目的-以下代码应该可以工作:

$cached = Cache::remember('Test', 10, function() use($slug) {
    $images = $this->allImages();

    // Undefined var $slug
    return file_get_contents($images[$slug]['image-url']);
});

当您创建一个匿名函数/闭包,稍后将其传递给Cache::memory()时,您需要明确列出父作用域中应该在该函数作用域中可用的所有变量

use语句用于此目的-以下代码应该可以工作:

$cached = Cache::remember('Test', 10, function() use($slug) {
    $images = $this->allImages();

    // Undefined var $slug
    return file_get_contents($images[$slug]['image-url']);
});

上帝保佑你,先生,上帝保佑你,先生。