codingpaws/expose

Transforms your classes to API entities

v1.1 2022-08-29 17:47 UTC

This package is auto-updated.

Last update: 2024-04-29 05:06:02 UTC


README

Expose is a framework to transform your classes (e.g. Laravel entities) to API entities.

Example

Install: composer require codingpaws/expose

use CodingPaws\Expose\HasEntity;
use CodingPaws\Expose\Entity;

// Dog.php
class Dog implements HasEntity {
  public function __construct(public string $name, public string $breed)
  {
  }
}

// DogEntity.class
class DogEntity extends Entity {
  public function __invoke(): void
  {
    $this->expose('name');
    $this->expose('breed');
    $this->expose('cute', true);
  }
}

// In your controller
$result = Entity::transform(new Dog('Lacey', 'Border Collie'));

// Generates an array like
$result = [
  'name' => 'Lacey',
  'breed' => 'Border Collie',
  'cute' => true,
];