Skip to content

AgelxNash/magicDto

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Magic DTO

Total Downloads codecov

class ExampleDto extends MagicDto
{
    public function __construct(
        public int $propInt,
        public float $propFloat,
        public CarbonImmutable $date,
        public ?ExampleDto $nested = null,
    ) {
    }
}
ExampleDto::from([
    'propInt' => 666,
    'propFloat' => '100.5',
    'date' => '2023-12-11',
    'nested' => [
        'date' => '2024-02-23',
        'propInt' => 777,
        'propFloat' => '200.1',
    ],
])
// or
ExampleDto::from([
    'prop_int' => 666,
    'prop_float' => '100.5',
    'date' => '2023-12-11',
    'nested' => [
        'date' => '2024-02-23',
        'prop_int' => 777,
        'prop_float' => '200.1',
    ],
])

Inject eloquent models

composer require "illuminate/database" required when you need to use AgelxNash\MagicDto\Attributes\InjectModel

Class User extends Illuminate\Database\Eloquent\Model {}

class ExampleDto extends MagicDto
{
    public function __construct(
        #[InjectModel(User::class, 'id')]
        public User $user1,
        #[InjectModel(User::class, 'email')]
        public User $user2,
    ) {
    }
}

ExampleDto::from(['user1' => 777]);
ExampleDto::from(['user2' => 'agel-nash@example.com']);

Author


Borisov Evgeniy
Agel_Nash


Laravel, MODX, Security Audit



https://agel-nash.ru
Telegram: @agel_nash
Email: laravel@agel-nash.ru

Donation


ЮMoney: 41001299480137

About

Create DTO from array

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages