猿问

将数组转换为链式方法

我有一个这样的数组......


$data = [

    'columns' => [

        [['increments', 'id']],

        [['string', 'key'], ['index']],

        [['text', 'value']],

    ]

];

第一个值是函数名称,第二个值是一个 arg/args(参数)。我希望每个都像这样运行($table)...


$table->increments('id');

$table->string('key')->index();

$table->text('value');

我尝试用循环迭代数组,并将函数用作数组 [$functionName($params)] 方法以及“call_user_func”。但是失败了。像上面的例子一样,一个一个地调用它们的最佳方式是什么?


四季花海
浏览 70回答 1
1回答

鸿蒙传说

正如@IslamElshobokshy 所提到的,这是一个可疑的请求,这可能意味着您的设计一开始就有缺陷/效率低下。如果你真的需要这样做,试试这样的事情:foreach ($data['columns'] as $calls) {  $currentValue = $table;  foreach ($calls as $call) {    $methodName = $call[0];    $methodArgs = array_slice($call, 1);    $currentValue = $currentValue->$methodName(...$methodArgs);  }}这利用了变量函数/方法和参数解包。
随时随地看视频慕课网APP
我要回答