splash/faker
Laravel/PHP package providing Faker helpers and integrations to generate realistic fake data for testing and seeding. Includes utilities to quickly create names, emails, addresses, dates, and more, streamlining factories and test setups.
Installation
composer require splash/faker
Ensure your project uses Symfony Flex (or manually register the bundle in config/bundles.php):
return [
// ...
Splash\FakerBundle\SplashFakerBundle::class => ['all' => true],
];
Configuration Publish the default config (if needed):
php bin/console splash:faker:install
Verify config/packages/splash_faker.yaml exists.
First Use Case Generate fake data in a controller or service:
use Splash\FakerBundle\Generator\FakerGenerator;
class DemoController extends AbstractController
{
public function generateData(FakerGenerator $generator): Response
{
$fakeUser = $generator->generate('user', ['name' => 'John Doe']);
return $this->json($fakeUser);
}
}
Data Generation
Use predefined generators (e.g., user, address, product) via dependency injection:
$generator->generate('user', ['age' => 30]); // Returns fake user with age=30
Custom Data Types
Extend the bundle by defining new generators in config/packages/splash_faker.yaml:
splash_faker:
generators:
custom_entity:
class: App\Service\CustomEntityGenerator
arguments: ['@service_id']
Integration with Forms Seed forms with fake data during development:
$form = $this->createForm(UserType::class, $generator->generate('user'));
Bulk Generation Use the CLI tool for batch generation:
php bin/console splash:faker:generate user 100 > users.json
FakerGenerator over instantiating directly.splash_faker:
enabled: '%kernel.environment% != "prod"'
public function testUserCreation()
{
$fakeUser = $this->container->get(FakerGenerator::class)->generate('user');
$this->assertArrayHasKey('email', $fakeUser);
}
Generator Registration
Splash\FakerBundle\Generator\GeneratorInterface and is registered in the config.Performance
splash:faker:generate with --batch-size for memory efficiency:
php bin/console splash:faker:generate user 1000 --batch-size=100
Configuration Overrides
splash_faker.yaml:
php bin/console cache:clear
splash_faker:
debug: true
validate command to check generator output:
php bin/console splash:faker:validate user
Custom Data Providers
Override default providers by extending Splash\FakerBundle\Provider\AbstractProvider and referencing them in config:
splash_faker:
providers:
custom_provider: App\Provider\CustomProvider
Event Listeners
Hook into generation lifecycle via events (e.g., splash_faker.generate):
// src/EventListener/FakerListener.php
public function onGenerate(FakerEvent $event)
{
$event->setData(array_merge($event->getData(), ['custom_field' => 'value']));
}
Database Seeding Combine with Doctrine fixtures for database population:
use Splash\FakerBundle\Generator\FakerGenerator;
use Doctrine\Bundle\FixturesBundle\Fixture;
class LoadUserDataFixture extends Fixture
{
public function __construct(private FakerGenerator $generator) {}
public function load(ObjectManager $manager)
{
$fakeUser = $this->generator->generate('user');
$user = new User();
$user->setEmail($fakeUser['email']);
$manager->persist($user);
}
}
How can I help you explore Laravel packages today?