elielfc/to-class

Converta seu json ou array em class personalizadas.

v1.0 2022-09-26 01:54 UTC

This package is auto-updated.

Last update: 2024-10-29 06:25:43 UTC


README

Converte um json ou um array para uma class personalizada.

Actions Status Total Downloads codecov

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.