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
Requires
- php: >=5.3.2
- doctrine/doctrine-bundle: *
- symfony/framework-bundle: >=2.1
- twig/twig: *
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
-
Register the bundle in your
config/bundles.php(Symfony Flex does this automatically):return [ // ... Rudak\FakeDataGenerator\Symfony\FakeDataGeneratorBundle::class => ['all' => true], ];
-
Inject the
Generatoror 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\Randomizerfor testable, seedable randomization - Strict typing with typed properties and return types
- Dedicated exceptions
-
Symfony module (
src/Symfony): Optional Symfony integration- Modern
AbstractBundlewith autowiring/autoconfiguration - All providers auto-registered and injectable
- Modern
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.