PHPackages                             rudak/fake-data-generator - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Testing &amp; Quality](/categories/testing)
4. /
5. rudak/fake-data-generator

ActiveLibrary[Testing &amp; Quality](/categories/testing)

rudak/fake-data-generator
=========================

Modern fake data generator with optional Symfony integration

v1.1.1(10y ago)1361GPL-3.0+PHPPHP &gt;=5.3.2CI failing

Since Nov 17Pushed 6mo ago1 watchersCompare

[ Source](https://github.com/rudak/FakeDataGenerator)[ Packagist](https://packagist.org/packages/rudak/fake-data-generator)[ RSS](/packages/rudak-fake-data-generator/feed)WikiDiscussions master Synced 4w ago

READMEChangelog (3)Dependencies (3)Versions (4)Used By (0)

FakeDataGenerator
=================

[](#fakedatagenerator)

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

Installation
------------

[](#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)
--------------------

[](#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
-------------------

[](#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
-------------------

[](#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 &amp; SRP
----------------------

[](#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 &amp; Testing
---------------------

[](#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
----------------------

[](#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:

```
