Skip to content

Commit

Permalink
Enhancement: Allow creating ContainerBuilder with definitions for def…
Browse files Browse the repository at this point in the history
…ault extensions
  • Loading branch information
localheinz committed Sep 5, 2023
1 parent 81dcd6f commit fc6fbc2
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 4 deletions.
13 changes: 12 additions & 1 deletion src/Faker/Container/ContainerBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,19 @@ public static function defaultExtensions(): array
];
}

public static function withDefaultExtensions(): self
{
$instance = new self();

foreach (self::defaultExtensions() as $id => $definition) {
$instance->add($id, $definition);
}

return $instance;
}

public static function getDefault(): ContainerInterface
{
return new Container(self::defaultExtensions());
return self::withDefaultExtensions()->build();
}
}
2 changes: 1 addition & 1 deletion src/Faker/Generator.php
Original file line number Diff line number Diff line change
Expand Up @@ -567,7 +567,7 @@ class Generator

public function __construct(ContainerInterface $container = null)
{
$this->container = $container ?: Container\ContainerBuilder::getDefault();
$this->container = $container ?: Container\ContainerBuilder::withDefaultExtensions()->build();
}

/**
Expand Down
6 changes: 4 additions & 2 deletions test/Faker/Extension/ContainerBuilderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -131,9 +131,11 @@ public function testBuildReturnsContainerWhenContainerBuilderHasCallableAsDefini
self::assertEquals($definition(), $container->get($id));
}

public function testGetDefaultReturnsContainerWithDefaultExtensions(): void
public function testWithDefaultExtensionsReturnsContainerBuilderWithDefaultExtensions(): void
{
$container = ContainerBuilder::getDefault();
$builder = ContainerBuilder::withDefaultExtensions();

$container = $builder->build();

self::assertTrue($container->has(Extension\BarcodeExtension::class));
self::assertTrue($container->has(Extension\BloodExtension::class));
Expand Down

0 comments on commit fc6fbc2

Please sign in to comment.