Перетворення даних у типобезпечні DTO за допомогою пакету Data Model

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 21 листопада, 2024
Досліджуйте новий пакет Data Model для PHP, який спрощує процес гідратації об'єктів без зайвих складнощів! Дізнайтеся, як впровадження типобезпечних об'єктів може революціонізувати ваш підхід до розробки, читаючи нашу статтю

Цей PHP пакет Data Model пропонує легкий та невимушений спосіб рекурсивно заповнювати типобезпечні PHP-об'єкти. Він використовує рефлексію та атрибути PHP для гідратації об'єктів та їх ініціалізації на основі типових підказок:

class Address
{
    use \Zerotoprod\DataModel\DataModel;

    public string $street;
    public string $city;
}

class User
{
    use \Zerotoprod\DataModel\DataModel;

    public string $username;
    public Address $address;
}

$User = User::from([
    'username' => 'John Doe',
    'address' => [
        'street' => '123 Main St',
        'city' => 'Hometown',
    ],
]);

echo $User->address->city; // Hometown

# Основні можливості

Цей пакет також містить розширені можливості, такі як обов'язкові властивості, що забезпечуються через атрибут PHP:

use Zerotoprod\DataModel\Describe;

class User
{
    use \Zerotoprod\DataModel\DataModel;

    #[Describe(['required' => true])]
    public string $username;

    public string $email;
}

User::from(['email' => 'john@example.com']);
// Викидає виняток PropertyRequiredException:
// Властивість: username є обов'язковою

Додаткові пов'язані пакети також пропонують хелпери, фабрики, трансформери та інше. Ви можете ознайомитися з цим пакетом, прочитавши документацію; вихідний код також доступний на GitHub за посиланням zero-to-prod/data-model.