Dummy — це пакет, створений Стівом Бауманом, який дозволяє генерувати екземпляри PHP-класів із заповненими випадковими даними за допомогою Faker. Це може бути дуже корисно для отримання екземплярів будь-якого класу (не лише моделей Eloquent) з реалістичними даними під час тестування, заповнення бази даних або швидкого прототипування.
Встановити пакет можна через Composer:
composer require directorytree/dummy
Dummy надає можливість генерувати класи з випадковими даними двома способами:
HasFactory безпосередньо в класі, для якого потрібно згенерувати випадкові екземпляри.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.
Вам цікаво дізнатися, як спростити інтеграцію RabbitMQ у вашому Laravel-додатку? У нашій статті ми розглянемо пакет Simple RabbitMQ, який дозволяє легко налаштувати багатозʼєднання, публікувати повідомлення та обробляти черги за допомогою простого синтаксису. Читайте далі, щоб дізнатися більше!
Встановлення Xdebug може бути складним завданням, але в цій статті ми розкриємо, як швидко та просто налаштувати його за допомогою Docker на прикладі Laravel. Дочитайте до кінця, щоб дізнатися, як за кілька хвилин зробити Xdebug вашим надійним помічником у розробці
Досліджуйте новий пакет Data Model для PHP, який спрощує процес гідратації об'єктів без зайвих складнощів! Дізнайтеся, як впровадження типобезпечних об'єктів може революціонізувати ваш підхід до розробки, читаючи нашу статтю