Skip to content

Repository files navigation

Paint

Latest Version on Packagist Total Downloads Tests Software License

Manipulate, transform and present data with ease.

Installation

You can install the package via composer:

composer require gizburdt/paint

Usage

Create 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->email

Testing

composer test

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages