From 276c2ea14c0c75cc77a778aa8cb868724dcff224 Mon Sep 17 00:00:00 2001 From: Enrico Zimuel Date: Tue, 13 Oct 2015 16:11:26 +0200 Subject: [PATCH] Refactor with new service manager and event manager --- composer.json | 6 +++--- src/Translator/LoaderPluginManager.php | 20 ++++++++++--------- src/Translator/Translator.php | 3 ++- src/Translator/TranslatorServiceFactory.php | 16 +++++++++++++-- src/View/HelperConfig.php | 8 ++++---- .../TranslatorServiceFactoryTest.php | 2 +- test/Translator/TranslatorTest.php | 9 ++++++++- 7 files changed, 43 insertions(+), 21 deletions(-) diff --git a/composer.json b/composer.json index 9ed2dba1..ae370f2a 100644 --- a/composer.json +++ b/composer.json @@ -19,11 +19,11 @@ "require-dev": { "zendframework/zend-cache": "~2.5", "zendframework/zend-config": "~2.5", - "zendframework/zend-eventmanager": "~2.5", + "zendframework/zend-eventmanager": "dev-develop as 2.7.0", "zendframework/zend-filter": "~2.5", - "zendframework/zend-servicemanager": "~2.5", + "zendframework/zend-servicemanager": "dev-develop as 2.7.0", "zendframework/zend-validator": "~2.5", - "zendframework/zend-view": "~2.5", + "zendframework/zend-view": "dev-develop as 2.6.0", "fabpot/php-cs-fixer": "1.7.*", "phpunit/PHPUnit": "~4.0" }, diff --git a/src/Translator/LoaderPluginManager.php b/src/Translator/LoaderPluginManager.php index 81297ae1..eb9bc22d 100644 --- a/src/Translator/LoaderPluginManager.php +++ b/src/Translator/LoaderPluginManager.php @@ -11,6 +11,7 @@ use Zend\I18n\Exception; use Zend\ServiceManager\AbstractPluginManager; +use Zend\ServiceManager\Factory\InvokableFactory; /** * Plugin manager implementation for translation loaders. @@ -54,15 +55,16 @@ */ class LoaderPluginManager extends AbstractPluginManager { - /** - * Default set of loaders. - * - * @var array - */ - protected $invokableClasses = [ - 'gettext' => 'Zend\I18n\Translator\Loader\Gettext', - 'ini' => 'Zend\I18n\Translator\Loader\Ini', - 'phparray' => 'Zend\I18n\Translator\Loader\PhpArray', + protected $aliases = [ + 'gettext' => Loader\Gettext::class, + 'ini' => Loader\Ini::class, + 'phparray' => Loader\PhpArray::class + ]; + + protected $factories = [ + Loader\Gettext::class => InvokableFactory::class, + Loader\Ini::class => InvokableFactory::class, + Loader\PhpArray::class => InvokableFactory::class ]; /** diff --git a/src/Translator/Translator.php b/src/Translator/Translator.php index bc8b71f4..89e99d45 100644 --- a/src/Translator/Translator.php +++ b/src/Translator/Translator.php @@ -19,6 +19,7 @@ use Zend\I18n\Translator\Loader\FileLoaderInterface; use Zend\I18n\Translator\Loader\RemoteLoaderInterface; use Zend\Stdlib\ArrayUtils; +use Zend\ServiceManager\ServiceManager; /** * Translator. @@ -334,7 +335,7 @@ public function setPluginManager(LoaderPluginManager $pluginManager) public function getPluginManager() { if (!$this->pluginManager instanceof LoaderPluginManager) { - $this->setPluginManager(new LoaderPluginManager()); + $this->setPluginManager(new LoaderPluginManager(new ServiceManager)); } return $this->pluginManager; diff --git a/src/Translator/TranslatorServiceFactory.php b/src/Translator/TranslatorServiceFactory.php index f9c0e1e4..c4934b56 100644 --- a/src/Translator/TranslatorServiceFactory.php +++ b/src/Translator/TranslatorServiceFactory.php @@ -9,14 +9,15 @@ namespace Zend\I18n\Translator; -use Zend\ServiceManager\FactoryInterface; -use Zend\ServiceManager\ServiceLocatorInterface; +use Zend\ServiceManager\Factory\FactoryInterface; +use Interop\Container\ContainerInterface; /** * Translator. */ class TranslatorServiceFactory implements FactoryInterface { + /* public function createService(ServiceLocatorInterface $serviceLocator) { // Configure the translator @@ -25,4 +26,15 @@ public function createService(ServiceLocatorInterface $serviceLocator) $translator = Translator::factory($trConfig); return $translator; } + */ + + public function __invoke(ContainerInterface $container, $requestedName, array $options = null) + { + // Configure the translator + $config = $container->get('Config'); + $trConfig = isset($config['translator']) ? $config['translator'] : []; + $translator = Translator::factory($trConfig); + return $translator; + } + } diff --git a/src/View/HelperConfig.php b/src/View/HelperConfig.php index 35d3a8e2..01a6000c 100644 --- a/src/View/HelperConfig.php +++ b/src/View/HelperConfig.php @@ -36,12 +36,12 @@ class HelperConfig implements ConfigInterface * in this class. * * @param ServiceManager $serviceManager - * @return void + * @return ServiceManager */ public function configureServiceManager(ServiceManager $serviceManager) { - foreach ($this->invokables as $name => $service) { - $serviceManager->setInvokableClass($name, $service); - } + return $serviceManager->withConfig( + [ 'invokables' => $this->invokables ] + ); } } diff --git a/test/Translator/TranslatorServiceFactoryTest.php b/test/Translator/TranslatorServiceFactoryTest.php index ca9fcdc5..98ef24ff 100644 --- a/test/Translator/TranslatorServiceFactoryTest.php +++ b/test/Translator/TranslatorServiceFactoryTest.php @@ -23,7 +23,7 @@ public function testCreateServiceWithNoTranslatorKeyDefined() ->will($this->returnValueMap($slContents)); $factory = new TranslatorServiceFactory(); - $translator = $factory->createService($serviceLocator); + $translator = $factory($serviceLocator, 'Zend\I18n\Translator\Translator'); $this->assertInstanceOf('Zend\I18n\Translator\Translator', $translator); } } diff --git a/test/Translator/TranslatorTest.php b/test/Translator/TranslatorTest.php index 75b59bec..04c4779e 100644 --- a/test/Translator/TranslatorTest.php +++ b/test/Translator/TranslatorTest.php @@ -165,7 +165,14 @@ public function testTranslate() { $loader = new TestLoader(); $loader->textDomain = new TextDomain(['foo' => 'bar']); - $this->translator->getPluginManager()->setService('test', $loader); + $pm = $this->translator->getPluginManager(); + $this->translator->setPluginManager( + $pm->withConfig([ + 'services' => [ + 'test' => $loader + ] + ]) + ); $this->translator->addTranslationFile('test', null); $this->assertEquals('bar', $this->translator->translate('foo'));