簡體   English   中英

調用fn時未定義的變量

[英]Undefined variable when calling fn

我在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']);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM