如何在php中的闭包函数中使用变量


How to use variable in closure functions in php?

我正在使用intervention for php进行图像操作。是否可以通过这样的变量将字体大小和颜色应用于文本?我已经计算了$fontsize和$color,但上面写着未定义的变量

$img->text($string, $item['x'], $top, function($font) {
                        $font->file('assets/fonts/Roboto-Medium.ttf');
                        $font->size($fontsize);
                        $font->color($color);
                        $font->align('left');
                        $font->valign('top');
                    });

您需要使用以下语法来传递变量:
在这里,您需要使用use()方法。

$img->text($string, $item['x'], $top, function() use($font){
    $font->file('assets/fonts/Roboto-Medium.ttf');
    $font->size($fontsize);
    $font->color($color);
    $font->align('left');
    $font->valign('top');
});

编辑

这里$font必须是Class object,因为这在callback函数中使用。如果你只想要数组,那么就采用以下方式:

$font = []; // initialize array
$img->text($string, $item['x'], $top, function() use($font){
        $font['file'] = 'assets/fonts/Roboto-Medium.ttf';
        $font['size'] = $fontsize;
        $font['color'] = $color;
        $font['align'] = 'left';
        $font['valign'] = 'top';
    });