adapterap/data-transfer-object

There is no license information available for the latest version (2.0.5) of this package.

Библиотека для конвертации массива в класс


README

Библиотека предоставляет возможность конвертировать массивы в объекты для дальнейшего использования типизации

Пример использования

use Adapterap\DataTransferObject\Attributes\EntityPropertyIsLazy;
use Adapterap\DataTransferObject\Attributes\EntityPropertyIsNotRequired;
use Adapterap\DataTransferObject\Attributes\EntityPropertyExcludedFromArray;
use Adapterap\DataTransferObject\Entity;

class SomeEntity extends Entity {
    /**
     * Поле, обязательное для заполнения.
     * 
     * @var int 
     */
    public int $requiredValue;
    
    /**
     * Не обязательное поле со значением по умолчанию.
     * 
     * @var int 
     */
    public int $defaultValue = 0;
    
    /**
     * Не обязательное поле.
     * 
     * @var int 
     */
    #[EntityPropertyIsNotRequired]
    public int $notRequiredValue;
    
    /**
     * Поле, которое можно не заполнять сразу, и заполнить позднее.
     * 
     * @var int 
     */
    #[EntityPropertyIsLazy]
    public int $lazyValue;
    
    /**
     * Поле, которое не будет включено в результирующий массив.
     * 
     * @var int 
     */
    #[EntityPropertyExcludedFromArray]
    public int $excludedValue;
}

$entity = new SomeEntity([
    'requiredValue' => 1,
]);

if ($entity->exists('notRequiredValue')) {
    // Поле $entity->notRequiredValue заполнено
}

// Динамическое заполнение
$entity->defaultValue = 1;
// или
$entity->fill(['defaultValue' => 1]);

$entity->toArray(); // [
                    //      'requiredValue' => ...,
                    //      'defaultValue' => ...,
                    //      'notRequiredValue' => ...,
                    //      'lazyValue' => ...,
                    // ];

TODO

  • Добавить атрибут для финального формата даты в toArray()
  • Добавить атрибут для изменения наименования атрибута (в snack, в camel, в custom)