PHP-在整个回调函数的深层传递参数

时间:2019-03-14 04:33:57

标签: php laravel laravel-excel


我正在使用Laravel-Excel库开发导出xls函数。
我需要为特定的单元格添加一个值。作为文档,我写了脚本

$data = MyModel::getComplexData();

Excel::create('Export payroll', function($excel) use ($data) {

    $excel->sheet('Sheet1', function($sheet) use ($data) {
        $sheet->cell('A1', function ($cell) use ($data) {
            $cell->setValue($data->name);
        });
    });

})->download('xls');

您可以看到参数$data已通过3个回调函数传递了3次。
我需要找到一种使脚本更加清晰的方法(仅通过$data 1次。)

1 个答案:

答案 0 :(得分:1)

我有主意看下面的代码。我们可以设置成成员变量。

<?php
class Test(){

    private $data = "Hellow";
    public function funct(){
        $data = MyModel::getComplexData();
        $this->data = $data;

        Excel::create('Export payroll', function($excel){

            $excel->sheet('Sheet1', function($sheet){
                $sheet->cell('A1', function ($cell){
                    $cell->setValue($this->data->name);
                });
            });

        })->download('xls');
    }
}

?>