Делаю АПИ для фронта
Создал трейт чтобы для всех выводов был один и тот же формат:
namespace App\Traits;
trait Output
{
protected $success = true;
protected $statusCode = 200;
protected $errors = [];
protected $data = [];
public function setData(array $data = [])
{
$this->data = array_merge($this->data, $data);
return $this;
}
...
public function renderOutput()
{
return response()->json([
'success' => $this->success,
'code' => $this->statusCode,
'errors' => $this->errors,
'data' => $this->data
], $this->statusCode);
}
Подключил его в глобальном контроллере:
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests, Output;
}
Теперь я могу в любом контроллере делать что то вроде этого:
$this->setData(['user' => $user]);
Но в конце всех контроллеров у меня только одна строка:
return $this->renderOutput();
Можно ли что то прописать в глобальном контроллере чтобы избавиться от этой строчки в остальных контроллерах?
пс, понимаю что ничего сложного в написании одной строки нет, но мне все же интересно есть ли решение для этой задачи