У меня есть этот код:
class Menu
{
public function render()
{
$res = '';
collect($this->items)->each(function ($item) use (&$res) {
$res .= $item->render();
});
return $res;
}
}
Я хотел бы вернуть то же значение, но удаляя $res
, Есть ли способ добиться этого?
Вы можете нанять array_reduce:
class Menu
{
public function render()
{
return array_reduce(collect($this->items)->toArray(), function ($res, $item) {
return $res . $item->render();
}, '');
}
}
но это менее эффективно, так как значение $res
будет скопирован вместо передачи по ссылке.
Решил это так:
class Menu
{
public function render()
{
return collect($this->items())->reduce(function ($carry, $item) {
return $carry . $item->render();
}, '');
}
}