rudak/fake-data-generator

Modern fake data generator with optional Symfony integration

Installs: 36

Dependents: 0

Suggesters: 0

Security: 0

Stars: 1

Watchers: 1

Forks: 1

Open Issues: 0

pkg:composer/rudak/fake-data-generator

v1.1.1 2016-06-01 10:24 UTC

This package is auto-updated.

Last update: 2025-12-10 15:14:38 UTC


README

Modern fake data generator compatible with PHP 8.2+ and optional Symfony 6.4/7.1 integration.

Installation

composer require rudak/fake-data-generator

For Symfony integration, ensure you have the required Symfony components:

composer require symfony/http-kernel symfony/dependency-injection

Usage (Library Only)

use Rudak\FakeDataGenerator\Core\Generator;
use Rudak\FakeDataGenerator\Core\Provider\NameProvider;
use Rudak\FakeDataGenerator\Core\Provider\AddressProvider;
use Random\Randomizer;

$generator = new Generator(new Randomizer());

// Register providers
$nameProvider = new NameProvider($generator->randomizer());
$generator->addProvider($nameProvider);

$addressProvider = new AddressProvider($generator->randomizer());
$generator->addProvider($addressProvider);

// Generate fake data
echo $nameProvider->fullName();        // e.g., "Michel Martin"
echo $nameProvider->firstName();       // e.g., "Alice"
echo $nameProvider->lastName();        // e.g., "Dupuis"
echo $nameProvider->pseudo();          // e.g., "Boom123"

echo $addressProvider->city();         // e.g., "Paris"
echo $addressProvider->postCode();     // e.g., "75000"
echo $addressProvider->streetAddress(); // e.g., "42 Rue des Merles"

Available Providers

  • NameProvider: Generate names, first names, last names, and pseudonyms
  • AddressProvider: Generate addresses, cities, postal codes, country codes
  • BankProvider: Generate bank names, IBAN, BIC, RIB, account numbers
  • NumberProvider: Generate phone numbers, mobile numbers, SIREN, SIRET
  • TextProvider: Generate characters, words, sentences, paragraphs
  • InternetProvider: Generate emails, domain names, URLs

Symfony Integration

  1. Register the bundle in your config/bundles.php (Symfony Flex does this automatically):

    return [
        // ...
        Rudak\FakeDataGenerator\Symfony\FakeDataGeneratorBundle::class => ['all' => true],
    ];
  2. Inject the Generator or individual providers into your services:

    use Rudak\FakeDataGenerator\Core\Generator;
    use Rudak\FakeDataGenerator\Core\Provider\NameProvider;
    
    class MyService
    {
        public function __construct(
            private Generator $generator,
            private NameProvider $nameProvider
        ) {}
    
        public function createFakeUser(): void
        {
            $name = $this->nameProvider->fullName();
            // ...
        }
    }

Architecture & SRP

This library follows the Single Responsibility Principle:

  • Core module (src/Core): Framework-agnostic data generation

    • No Symfony or framework dependencies
    • Uses PHP 8.2+ Random\Randomizer for testable, seedable randomization
    • Strict typing with typed properties and return types
    • Dedicated exceptions
  • Symfony module (src/Symfony): Optional Symfony integration

    • Modern AbstractBundle with autowiring/autoconfiguration
    • All providers auto-registered and injectable

Quality & Testing

Run tests:

vendor/bin/phpunit

Run static analysis:

vendor/bin/phpstan analyse

Run code quality checks:

vendor/bin/rector process --dry-run
vendor/bin/php-cs-fixer fix --dry-run

Backward Compatibility

This version modernizes the library with a new namespace (Rudak\FakeDataGenerator\ instead of Rudak\FDG\).

If you need to maintain compatibility with the old namespace, you can use class aliases in your composer.json:

{
    "autoload": {
        "files": ["bc-layer.php"]
    }
}

And create a bc-layer.php file with class aliases:

<?php
// Example backward compatibility layer
class_alias(\Rudak\FakeDataGenerator\Core\Provider\NameProvider::class, 'Rudak\\FDG\\FakeUser');
// ... other aliases as needed

Requirements

  • PHP 8.2 or higher
  • ext-json
  • ext-mbstring

License

MIT License - see LICENSE file for details.