Skip to content

gizburdt/paint

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

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages