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

Перекладено ШІ 18 Laravel News 08 травня, 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 Оновлено 07 травня, 2026

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

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

172 Оновлено 07 травня, 2026

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

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

28 Оновлено 07 травня, 2026

Інтеграція Laravel Socialite з бібліотекою Google Client PHP

Ви хочете навчитися, як інтегрувати Google OAuth у вашому проекті Laravel, використовуючи Socialite? Дізнайтеся, як налаштувати доступ до сервісів Google, таких як Календар, у нашій сьогоднішній статті