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

Перекладено ШІ 20 Laravel News 26 червня, 2026

Досліджуйте новий пакет 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

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

  • Спрощена гідратація об'єктів: Забудьте про ручне присвоєння властивостей та повторюваний код. DataModel автоматизує цей процес, забезпечуючи правильне заповнення об'єктів на основі їхніх типів.
  • Гарантія типобезпечності: Типобезпечність забезпечується самою PHP. Використовуючи DataModel, ви можете бути впевнені, що ваші об'єкти містять очікувані типи без додаткової валідації.
  • Зменшення захисного програмування: Замість написання захисного коду для перевірки та очищення даних, DataModel дозволяє визначити, як кожна властивість має бути оброблена перед гідратацією об'єкта.
  • Гнучке вирішення значень: За допомогою атрибута #[Describe()] ви контролюєте, як обробляються значення для кожної властивості, включаючи трансформації, значення за замовчуванням та користувацьке приведення. Це гарантує, що ваша модель даних працює так, як ви задумали.
  • Невимушена інтеграція: Просто додайте trait DataModel до своїх класів. Немає потреби розширювати базові класи чи імплементувати інтерфейси, що дозволяє зберігати чистоту вашої ієрархії класів.

Цей пакет також містить розширені можливості, такі як обов'язкові властивості, що забезпечуються через атрибут 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.

Популярні

Інше, що варто прочитати

10 Оновлено 26 червня, 2026

Усе, що ми знаємо про Laravel 12

Laravel 12 обіцяє стати важливим оновленням, яке зосереджене на підтримці й оптимізації, забезпечуючи безболісний перехід для більшості застосунків. Чи готові ви дізнатися, які нові можливості та зміни чекають на вас у цій версії

13 Оновлено 26 червня, 2026

Генерація документації в Laravel за допомогою штучного інтелекту

Docudoodle — це потужний пакет для генерації документації в Laravel, який допомагає легко аналізувати вашу кодову базу та створювати документацію за допомогою обраного вами AI. Чи готові ви дізнатися, як цей інструмент може спростити вашу роботу з документуванням коду? Читайте далі!

Використання повнотекстового пошуку в Laravel
180 Оновлено 26 червня, 2026

Використання повнотекстового пошуку в Laravel

Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом