elielfc / to-class
Converta seu json ou array em class personalizadas.
Requires
- php: ^8.0
Requires (Dev)
- phpunit/phpunit: ^9.5.10
README
Converte um json ou um array para uma class personalizada.
Instalação
composer require elielfc/to-class
Instruções de uso
Basico
Crie uma classe que implemente \ElielFC\ToClass\Contract\ToClass
e estenda \ElielFC\ToClass\BaseToClass
.
Defina suas propriedade e seus tipos.
<?php /*...*/ use ElielFC\ToClass\{ Contract\ToClass, BaseToClass }; class EntityToClass extends BaseToClass implements ToClass { public int $id; public bool $active; }
Crie uma instancia dessa classe e chame o método make
$entity = new EntityToClass(); $entity->make(["id" => 10, "active" => true, "name" => "Eliel F Canivarolli", /*...*/]);
Nesse exemplo as propriedades da sua instancia de entity sera populada com as informações de id
, active
e a informação de nome
não sera salvo, pois não a uma propriedade nome na classe.
O make
também aceita um json como argumento.
$entity->make('{"id":"10", "active":"true", "name":"Eliel F Canivarolli"}');
Se durante o bind você precise fazer algum tratamento na informação, base adicionar uma função na sua classe que tenha o nome no seguinte formato set
+ nome da propriedade + Attribute
/*...*/ public bool $active; public function setActiveAttribute(mixed $value): void { $this->active = $value === "VERDADEIRO"; } /* Ex: Atribuição em um array */ public array $phone: public function setPhoneAttribute(mixed $value): void { $this->phone[] = $value; } /*...*/
Caso uma das suas propriedade seja um objeto e também deseje mapear para uma classe personalizada, user a propriedade $cast
.
/*...*/ public NewEntityToClass $entity; protected array $cast = [ 'entity' => NewEntityToClass::class, ]; /*...*/
Sua NewEntityToClass
tem que estender BaseToClass
e implementar ToClass
License
The MIT License (MIT). Please see License File for more information.