foundry icon indicating copy to clipboard operation
foundry copied to clipboard

Document using custom faker providers

Open kbond opened this issue 5 years ago • 0 comments

With a faker generator factory service:

namespace Your\Namespace;

class FakerGenerator
{
    public static function create(): \Faker\Generator
    {
        $generator = \Faker\Factory::create();
        $generator->addProvider(new TitleProvider($generator));
        return $generator;
    }
}
services:
    my_faker:
        class: Faker\Generator
        factory: ['Your\Namespace\FakerGenerator', 'create']

zenstruck_foundry:
    faker:
        service: my_faker

Or with a custom faker generator:

namespace Your\Namespace;

use Your\Namespace\YourProvider;
use Faker\Generator;
use Faker\Factory;

class CustomGenerator extends Generator
{
    public function __construct()
    {
        // Get a default generator with default providers
        $generator = Factory::create();

        // Add custom providers
        $generator->addProvider(new YourProvider($generator));

        // copy default and custom providers to this custom generator
        foreach ($generator->getProviders() as $provider) {
            $this->addProvider($provider);
        }
    }
}
zenstruck_foundry:
    faker:
        service: Your\Namespace\CustomGenerator

Per slack conversation with @voltel.

kbond avatar Nov 04 '20 15:11 kbond