Manipulate, transform and present data with ease.
You can install the package via composer:
composer require gizburdt/paintCreate a presenter by extending Presenter and adding methods. The original object is
available as $this->entity.
use Gizburdt\Paint\Presenter;
class UserPresenter extends Presenter
{
public function fullName(): string
{
return "{$this->entity->first_name} {$this->entity->last_name}";
}
public function name(): string
{
return strtoupper($this->entity->first_name);
}
}Add the Presentable trait to the class you want to present and point the $presenter
property to your presenter:
use Gizburdt\Paint\Presentable;
class User
{
use Presentable;
protected string $presenter = UserPresenter::class;
}Call present() to get the presenter instance. Methods can be accessed as properties,
and any property that is not defined on the presenter falls back to the entity:
$user = User::find(1);
$user->present()->fullName(); // "John Doe" (regular method call)
$user->present()->name; // "JOHN" (name() accessed as a property)
$user->present()->email; // falls back to $user->emailcomposer test