I want to understand what should be presenters in Laravel. For example, I already have some kind of thinking and sample code about Laravel Presenters.
Code:
Base Abstract Presenter
<?php
namespace App\Presenter;
abstract class Presenter
{
protected $model;
public function __construct(Model $model)
{
$this->model = $model;
}
public function __call($method, $args)
{
return call_user_func_array([$this->model, $method], $args);
}
public function __get($name)
{
return $this->model->{$name};
}
}
Example Presenter
<?php
namespace App\Users\Presenters;
use App\Presenter\Presenter;
class UserPresenter extends Presenter
{
public function fullName()
{
return trim($this->model->first_name . ' ' . $this->model->last_name);
}
public function createdAt()
{
return $this->model->created_at->format('n/j/Y');
}
}
Example Presenter Usage:
<?php
namespace App\Http\Controllers;
use App\Users\Presenters\UserPresenter;
use App\Http\Controllers\Controller;
class UsersController extends Controller
{
public function show($id)
{
$user = new UserPresenter(User::findOrFail($id));
return response()->json([
'name' => $user->fullName(),
'role' => $user->role(),
'created_at' => $user->createdAt(),
'is_active' => $user->isActive(),
]);
}
}
This design patterns for Laravel Presenters is right or I've any errors? How must be ideal presenters?
Thanks for responding!
Aucun commentaire:
Enregistrer un commentaire