adapterap/data-transfer-object

该软件包最新版本(2.0.5)没有可用的许可证信息。

将数组转换为类的库

该软件包的官方仓库似乎已消失,因此该软件包已被冻结。


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' => ...,
                    // ];

待办事项

  • toArray() 中添加用于最终日期格式的属性
  • 添加用于更改属性名称的属性(在 snack、camel、custom 中)