Skip to content

Commit

Permalink
mark TranslatorFactory as final and remove FactoryInterface
Browse files Browse the repository at this point in the history
Signed-off-by: Thomas Müller <[email protected]>
  • Loading branch information
mimmi20 committed May 21, 2024
1 parent b516a5b commit 1701f70
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 26 deletions.
28 changes: 10 additions & 18 deletions src/Translator/TranslatorFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
use Laminas\I18n\Translator\LoaderPluginManager;
use Laminas\I18n\Translator\Translator as I18nTranslator;
use Laminas\I18n\Translator\TranslatorInterface;
use Laminas\ServiceManager\Factory\FactoryInterface;
use Laminas\ServiceManager\ServiceManager;
use Psr\Container\ContainerInterface;
use Traversable;
Expand All @@ -21,13 +20,9 @@
* Overrides the translator factory from the i18n component in order to
* replace it with the bridge class from this namespace.
*/
class TranslatorFactory implements FactoryInterface
final class TranslatorFactory
{
/**
* @param string $requestedName
* @return Translator
*/
public function __invoke(ContainerInterface $container, $requestedName, ?array $options = null)
public function __invoke(ContainerInterface $container): Translator
{
// Assume that if a user has registered a service for the
// TranslatorInterface, it must be valid
Expand All @@ -49,14 +44,13 @@ public function __invoke(ContainerInterface $container, $requestedName, ?array $
* - returns an Translator decorating a DummyTranslator instance if
* ext/intl is not loaded.
* - returns an Translator decorating an empty I18nTranslator instance.
*
* @return Translator
*/
private function marshalTranslator(ContainerInterface $container)
private function marshalTranslator(ContainerInterface $container): Translator
{
// Load a translator from configuration, if possible
$translator = $this->marshalTranslatorFromConfig($container);
if ($translator) {

if ($translator instanceof Translator) {
return $translator;
}

Expand All @@ -78,19 +72,17 @@ private function marshalTranslator(ContainerInterface $container)
* configuration is available, and is a non-empty array or a Traversable
* instance.
* - null in all other cases, including absence of a configuration service.
*
* @return void|Translator
*/
private function marshalTranslatorFromConfig(ContainerInterface $container)
private function marshalTranslatorFromConfig(ContainerInterface $container): ?Translator
{
if (! $container->has('config')) {
return;
return null;
}

$config = $container->get('config');

if (! is_array($config) || ! array_key_exists('translator', $config)) {
return;
return null;
}

// 'translator' => false
Expand All @@ -100,12 +92,12 @@ private function marshalTranslatorFromConfig(ContainerInterface $container)

// Empty translator configuration
if (is_array($config['translator']) && empty($config['translator'])) {
return;
return null;
}

// Unusable translator configuration
if (! is_array($config['translator']) && ! $config['translator'] instanceof Traversable) {
return;
return null;
}

// Create translator from configuration
Expand Down
16 changes: 8 additions & 8 deletions test/Translator/TranslatorFactoryTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public function testFactoryReturnsTranslatorDecoratingTranslatorInterfaceService
self::assertInstanceOf(ContainerInterface::class, $container);

$factory = new TranslatorFactory();
$test = $factory($container, TranslatorInterface::class);
$test = $factory($container);

$this->assertInstanceOf(Translator::class, $test);

Expand Down Expand Up @@ -84,7 +84,7 @@ public function testFactoryReturnsTranslatorDecoratingDefaultTranslatorWhenNoCon
self::assertInstanceOf(ContainerInterface::class, $container);

$factory = new TranslatorFactory();
$test = $factory($container, TranslatorInterface::class);
$test = $factory($container);

$this->assertInstanceOf(Translator::class, $test);

Expand Down Expand Up @@ -119,7 +119,7 @@ public function testFactoryReturnsMvcDecoratorDecoratingDefaultTranslatorWhenNoT
self::assertInstanceOf(ContainerInterface::class, $container);

$factory = new TranslatorFactory();
$test = $factory($container, TranslatorInterface::class);
$test = $factory($container);

$this->assertInstanceOf(Translator::class, $test);

Expand Down Expand Up @@ -149,7 +149,7 @@ public function testFactoryReturnsMvcDecoratorDecoratingDummyTranslatorWhenTrans
self::assertInstanceOf(ContainerInterface::class, $container);

$factory = new TranslatorFactory();
$test = $factory($container, TranslatorInterface::class);
$test = $factory($container);

$this->assertInstanceOf(Translator::class, $test);

Expand Down Expand Up @@ -184,7 +184,7 @@ public function testFactoryReturnsMvcDecoratorDecoratingDefaultTranslatorWhenEmp
self::assertInstanceOf(ContainerInterface::class, $container);

$factory = new TranslatorFactory();
$test = $factory($container, TranslatorInterface::class);
$test = $factory($container);

$this->assertInstanceOf(Translator::class, $test);

Expand Down Expand Up @@ -240,7 +240,7 @@ public function testFactoryReturnsDecoratorDecoratingDefaultTranslatorWithInvali
self::assertInstanceOf(ContainerInterface::class, $container);

$factory = new TranslatorFactory();
$test = $factory($container, TranslatorInterface::class);
$test = $factory($container);

$this->assertInstanceOf(Translator::class, $test);

Expand Down Expand Up @@ -297,7 +297,7 @@ public function testFactoryReturnsConfiguredTranslatorWhenValidConfigIsPresent($
self::assertInstanceOf(ContainerInterface::class, $container);

$factory = new TranslatorFactory();
$test = $factory($container, TranslatorInterface::class);
$test = $factory($container);

$this->assertInstanceOf(Translator::class, $test);

Expand Down Expand Up @@ -350,7 +350,7 @@ public function testFactoryReturnsConfiguredTranslatorInjectedWithTranslatorPlug
self::assertInstanceOf(ContainerInterface::class, $container);

$factory = new TranslatorFactory();
$test = $factory($container, TranslatorInterface::class);
$test = $factory($container);

$this->assertInstanceOf(Translator::class, $test);

Expand Down

0 comments on commit 1701f70

Please sign in to comment.