Створення екземплярів PHP-класів з заповненням фейковими даними за допомогою Faker

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

Ви коли-небудь стикалися з труднощами під час тестування вашого Laravel-застосунку через нестачу реалістичних даних? Пакет Dummy, розроблений Стівом Бауманом, істотно спростить цей процес, дозволяючи вам генерувати об'єкти класів з реалістичними даними за допомогою Faker. Читайте далі, щоб дізнатися, як він може допомогти у вашій розробці

Dummy — це пакет, створений Стівом Бауманом, який дозволяє генерувати екземпляри PHP-класів із заповненими випадковими даними за допомогою Faker. Це може бути дуже корисно для отримання екземплярів будь-якого класу (не лише моделей Eloquent) з реалістичними даними під час тестування, заповнення бази даних або швидкого прототипування.

Встановити пакет можна через Composer:

composer require directorytree/dummy

Dummy надає можливість генерувати класи з випадковими даними двома способами:

  1. Використовуючи трейт HasFactory безпосередньо в класі, для якого потрібно згенерувати випадкові екземпляри.
  2. Використовуючи окремий Factory клас, що надає більше контролю над процесом генерації даних.

Приклади кожного з варіантів наведені нижче:

namespace App\Data;
 
use Faker\Generator;
use DirectoryTree\Dummy\HasFactory;
 
class Player
{
    use HasFactory;
 
    /**
     * Створити новий екземпляр гравця.
     */
    public function __construct(
        public string $name,
        public DateTime $dob,
        public string $nationality,
    ) {}
 
    /**
     * Визначити стандартний стан фабрики.
     */
    protected function getFactoryDefinition(Generator $faker): array
    {
        return [
            'name' => $faker->name(),
            'dob' => $faker->dateTimeBetween('1970-01-01', '-16 years'),
            'nationality' => $faker->country(),
        ];
    }
 
    /**
     * Створити новий екземпляр класу, використовуючи визначення фабрики.
     */
    protected static function toFactoryInstance(array $attributes): static
    {
        return new static(
            $attributes['name'],
            $attributes['dob'],
            $attributes['nationality'],
        );
    }
}
namespace App\Factories;
 
use App\Data\Player;
use DirectoryTree\Dummy\Factory;
 
class PlayerFactory extends Factory
{
    /**
     * Визначити стандартний стан фабрики.
     */
    protected function definition(): array
    {
        return [
            'name' => $this->faker->name(),
            'dob' => $this->faker->dateTimeBetween('1970-01-01', '-16 years'),
            'nationality' => $this->faker->country(),
        ];
    }
 
    /**
     * Згенерувати новий екземпляр класу.
     */
    protected function generate(array $attributes): Player
    {
        return new Player(
            $attributes['name'],
            $attributes['dob'],
            $attributes['nationality'],
        );
    }
}

Для генерації випадкових екземплярів класу можна використовувати метод make:

// Використовуючи трейт:
$player = Player::factory()->make();
 
// Використовуючи клас фабрики:
$player = PlayerFactory::new()->make();

Крім того, пакет дозволяє:

  • Перезаписувати атрибути у визначенні
  • Генерувати кілька екземплярів за допомогою методу count.
  • Визначати специфічні методи для модифікації стандартних атрибутів за допомогою станів фабрики
  • Створювати зворотні виклики фабрики для виконання додаткових завдань після створення класу.
  • Використовувати послідовності фабрики для чергування значення певного атрибута для кожного згенерованого класу
  • Налаштовувати колекції, що повертаються, під час створення кількох випадкових класів.

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

Дізнайтеся більше про цей пакет та перегляньте вихідний код на GitHub.

Популярні

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

14 Оновлено 01 червня, 2026

Claude Agent тепер інтегрований в AI Assistant для PhpStorm

Ви коли-небудь задумувалися, як полегшити свою роботу в Laravel? У нашій статті ми розглядаємо, як інтеграція Claude Code в PhpStorm може підвищити вашу продуктивність, спростивши процес написання коду та навчання нових розробників. Читайте далі, щоб дізнатися більше про переваги та функціональність цього потужного поєднання

83 Оновлено 01 червня, 2026

Все, що потрібно знати про Laravel 13

Laravel 13 вийде в березні 2026 року й вимагатиме мінімум PHP 8.3. Хочете дізнатися, як PHP‑атрибути для моделей, нові налаштування черг і метод Cache::touch() вплинуть на вашу розробку?

11 Оновлено 01 червня, 2026

Управління доступом у Filament за допомогою плагіна Shield

Дізнайтеся, як пакет Filament Shield забезпечує управління доступом до ваших панелей, ресурсів і віджетів у Laravel. Ця стаття розкриває основні можливості пакету, включаючи просту установку та підтримку багатокористувацьких середовищ — не пропустіть!