From 48149d3fb0f69ccea2554782b764b74c65a9f8ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Anne?= Date: Fri, 7 May 2021 22:06:42 +0200 Subject: [PATCH 1/7] PSR-16 standard compliance MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #49 Signed-off-by: Cédric Anne Signed-off-by: Adrien Crivelli --- composer.json | 3 +- composer.lock | 104 ++++++++++++++--------------- docs/book/translator/caching.md | 21 ++---- docs/book/translator/factory.md | 22 ++---- src/Translator/Translator.php | 32 +++++---- test/Translator/TranslatorTest.php | 69 ++++++++++--------- 6 files changed, 118 insertions(+), 133 deletions(-) diff --git a/composer.json b/composer.json index a2bcfa06..adf69983 100644 --- a/composer.json +++ b/composer.json @@ -35,7 +35,8 @@ "php": "~8.1.0 || ~8.2.0 || ~8.3.0", "ext-intl": "*", "laminas/laminas-servicemanager": "^3.21.0", - "laminas/laminas-stdlib": "^3.0" + "laminas/laminas-stdlib": "^3.0", + "psr/simple-cache": "^1.0 || ^2.0 || ^3.0" }, "require-dev": { "laminas/laminas-cache": "^3.12.1", diff --git a/composer.lock b/composer.lock index 5ac4465a..c02463a1 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "31ac363ec8bf003ee6a61b444948f2b2", + "content-hash": "0e9d1dcf1a7ded07aa7cdfc6056e250c", "packages": [ { "name": "laminas/laminas-servicemanager", @@ -202,6 +202,57 @@ "source": "https://github.com/php-fig/container/tree/1.1.2" }, "time": "2021-11-05T16:50:12+00:00" + }, + { + "name": "psr/simple-cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/master" + }, + "time": "2017-10-23T01:57:42+00:00" } ], "packages-dev": [ @@ -2910,57 +2961,6 @@ }, "time": "2021-07-14T16:46:02+00:00" }, - { - "name": "psr/simple-cache", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/simple-cache.git", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\SimpleCache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interfaces for simple caching", - "keywords": [ - "cache", - "caching", - "psr", - "psr-16", - "simple-cache" - ], - "support": { - "source": "https://github.com/php-fig/simple-cache/tree/master" - }, - "time": "2017-10-23T01:57:42+00:00" - }, { "name": "sebastian/cli-parser", "version": "2.0.1", diff --git a/docs/book/translator/caching.md b/docs/book/translator/caching.md index fdea25ce..a1f63484 100755 --- a/docs/book/translator/caching.md +++ b/docs/book/translator/caching.md @@ -4,27 +4,17 @@ In production, it makes sense to cache your translations. This not only saves you from loading and parsing the individual formats each time, but also guarantees an optimized loading procedure. -> MISSING: **Installation Requirements** -> The cache support of laminas-i18n depends on the [laminas-cache](https://docs.laminas.dev/laminas-cache/) component, so be sure to have it installed before getting started: -> -> ```bash -> $ composer require laminas/laminas-cache -> ``` -> -> Version 3 of laminas-cache removed support for factories required by this component, so if your application requires laminas-cache version 3 or later, you will also need to install `laminas-cache-storage-deprecated-factory` -> -> ```bash -> $ composer require laminas/laminas-cache-storage-deprecated-factory -> ``` - ## Enable Caching -To enable caching, pass a `Laminas\Cache\Storage\Adapter` to the `setCache()` +To enable caching, pass a `Psr\SimpleCache\CacheInterface` to the `setCache()` method. +The following example is based on the use of the +[laminas-cache](https://docs.laminas.dev/laminas-cache/) component. + ```php $translator = new Laminas\I18n\Translator\Translator(); -$cache = Laminas\Cache\StorageFactory::factory([ +$cacheStorage = Laminas\Cache\StorageFactory::factory([ 'adapter' => [ 'name' => Laminas\Cache\Storage\Adapter\Filesystem::class, 'options' => [ @@ -32,6 +22,7 @@ $cache = Laminas\Cache\StorageFactory::factory([ ], ], ]); +$cache = new Laminas\Cache\Psr\SimpleCache\SimpleCacheDecorator(cacheStorage); $translator->setCache($cache); ``` diff --git a/docs/book/translator/factory.md b/docs/book/translator/factory.md index 7b5dec25..133638f7 100755 --- a/docs/book/translator/factory.md +++ b/docs/book/translator/factory.md @@ -115,8 +115,12 @@ $translator->getPluginManager()->setService( ### Using a Cache Instance +The following example is based on the use of the +[laminas-cache](https://docs.laminas.dev/laminas-cache/) component. + ```php -$cache = Laminas\Cache\StorageFactory::factory([ +$translator = new Laminas\I18n\Translator\Translator(); +$cacheStorage = Laminas\Cache\StorageFactory::factory([ 'adapter' => [ 'name' => Laminas\Cache\Storage\Adapter\Filesystem::class, 'options' => [ @@ -124,26 +128,12 @@ $cache = Laminas\Cache\StorageFactory::factory([ ], ], ]); +$cache = new Laminas\Cache\Psr\SimpleCache\SimpleCacheDecorator(cacheStorage); $translator = Laminas\I18n\Translator\Translator::factory([ 'cache' => $cache, ]); ``` -### Using Cache Configuration - -```php -$translator = Laminas\I18n\Translator\Translator::factory([ - 'cache' => [ - 'adapter' => [ - 'name' => Laminas\Cache\Storage\Adapter\Filesystem::class, - 'options' => [ - 'cache_dir' => __DIR__ . '/cache', - ], - ], - ], -]); -``` - ## Enable EventManager ```php diff --git a/src/Translator/Translator.php b/src/Translator/Translator.php index 597d2395..5bbac4fa 100644 --- a/src/Translator/Translator.php +++ b/src/Translator/Translator.php @@ -2,8 +2,6 @@ namespace Laminas\I18n\Translator; -use Laminas\Cache; -use Laminas\Cache\Storage\StorageInterface as CacheStorage; use Laminas\EventManager\Event; use Laminas\EventManager\EventManager; use Laminas\EventManager\EventManagerInterface; @@ -13,6 +11,7 @@ use Laminas\ServiceManager\ServiceManager; use Laminas\Stdlib\ArrayUtils; use Locale; +use Psr\SimpleCache\CacheInterface; use Traversable; use function array_shift; @@ -84,7 +83,7 @@ class Translator implements TranslatorInterface /** * Translation cache. * - * @var CacheStorage|null + * @var CacheInterface|null */ protected $cache; @@ -220,11 +219,15 @@ public static function factory($options) // cache if (isset($options['cache'])) { - if ($options['cache'] instanceof CacheStorage) { - $translator->setCache($options['cache']); - } else { - $translator->setCache(Cache\StorageFactory::factory($options['cache'])); + if (! ($options['cache'] instanceof CacheInterface)) { + throw new Exception\InvalidArgumentException(sprintf( + '%s expects a %s instance; received "%s"', + __METHOD__, + CacheInterface::class, + (is_object($options) ? get_class($options) : gettype($options)) + )); } + $translator->setCache($options['cache']); } // event manager enabled @@ -288,9 +291,10 @@ public function getFallbackLocale() /** * Sets a cache * + * @param CacheInterface|null $cache * @return $this */ - public function setCache(?CacheStorage $cache = null) + public function setCache(?CacheInterface $cache = null) { $this->cache = $cache; @@ -300,7 +304,7 @@ public function setCache(?CacheStorage $cache = null) /** * Returns the set cache * - * @return CacheStorage|null The set cache + * @return CacheInterface|null The set cache */ public function getCache() { @@ -499,7 +503,7 @@ public function addTranslationFile( } $this->files[$textDomain][$locale][] = [ - 'type' => $type, + 'type' => $type, 'filename' => $filename, ]; @@ -561,7 +565,7 @@ public function addRemoteTranslations($type, $textDomain = 'default') */ public function getCacheId($textDomain, $locale) { - return 'Laminas_I18n_Translator_Messages_' . md5($textDomain . $locale); + return 'Laminas_I18n_Translator_Msg_' . md5($textDomain . $locale); } /** @@ -576,7 +580,7 @@ public function clearCache($textDomain, $locale) if (null === ($cache = $this->getCache())) { return false; } - return $cache->removeItem($this->getCacheId($textDomain, $locale)); + return $cache->delete($this->getCacheId($textDomain, $locale)); } /** @@ -597,7 +601,7 @@ protected function loadMessages($textDomain, $locale) if (null !== ($cache = $this->getCache())) { $cacheId = $this->getCacheId($textDomain, $locale); - if (null !== ($result = $cache->getItem($cacheId))) { + if (null !== ($result = $cache->get($cacheId))) { $this->messages[$textDomain][$locale] = $result; return; @@ -631,7 +635,7 @@ protected function loadMessages($textDomain, $locale) } if ($cache !== null) { - $cache->setItem($cacheId, $this->messages[$textDomain][$locale]); + $cache->set($cacheId, $this->messages[$textDomain][$locale]); } } diff --git a/test/Translator/TranslatorTest.php b/test/Translator/TranslatorTest.php index 768c2ac6..bf9396d2 100644 --- a/test/Translator/TranslatorTest.php +++ b/test/Translator/TranslatorTest.php @@ -4,9 +4,9 @@ namespace LaminasTest\I18n\Translator; -use Laminas\Cache\Storage\StorageInterface; use Laminas\Cache\StorageFactory as CacheFactory; use Laminas\EventManager\Event; +use Laminas\Cache\Psr\SimpleCache\SimpleCacheDecorator; use Laminas\EventManager\EventInterface; use Laminas\I18n\Translator\TextDomain; use Laminas\I18n\Translator\Translator; @@ -23,7 +23,7 @@ class TranslatorTest extends TestCase protected function setUp(): void { parent::setUp(); - $this->translator = new Translator(); + $this->translator = new Translator(); Locale::setDefault('en_EN'); $this->testFilesDir = __DIR__ . '/_files'; } @@ -31,17 +31,17 @@ protected function setUp(): void public function testFactoryCreatesTranslator(): void { $translator = Translator::factory([ - 'locale' => 'de_DE', + 'locale' => 'de_DE', 'patterns' => [ [ - 'type' => 'phparray', + 'type' => 'phparray', 'base_dir' => $this->testFilesDir . '/testarray', 'pattern' => 'translation-%s.php', ], ], - 'files' => [ + 'files' => [ [ - 'type' => 'phparray', + 'type' => 'phparray', 'filename' => $this->testFilesDir . '/translation_en.php', ], ], @@ -54,15 +54,15 @@ public function testFactoryCreatesTranslator(): void public function testTranslationFromSeveralTranslationFiles(): void { $translator = Translator::factory([ - 'locale' => 'de_DE', + 'locale' => 'de_DE', 'translation_file_patterns' => [ [ - 'type' => 'phparray', + 'type' => 'phparray', 'base_dir' => $this->testFilesDir . '/testarray', 'pattern' => 'translation-%s.php', ], [ - 'type' => 'phparray', + 'type' => 'phparray', 'base_dir' => $this->testFilesDir . '/testarray', 'pattern' => 'translation-more-%s.php', ], @@ -102,7 +102,7 @@ public function testTranslationFromSeveralTranslationFiles(): void public function testTranslationFromDifferentSourceTypes(): void { $translator = Translator::factory([ - 'locale' => 'de_DE', + 'locale' => 'de_DE', 'translation_file_patterns' => [ [ 'type' => 'phparray', @@ -110,7 +110,7 @@ public function testTranslationFromDifferentSourceTypes(): void 'pattern' => 'translation-de_DE.php', ], ], - 'translation_files' => [ + 'translation_files' => [ [ 'type' => 'phparray', 'filename' => $this->testFilesDir . '/testarray/translation-more-de_DE.php', @@ -124,22 +124,22 @@ public function testTranslationFromDifferentSourceTypes(): void public function testFactoryCreatesTranslatorWithCache(): void { + $cache = new SimpleCacheDecorator(CacheFactory::factory(['adapter' => 'memory'])); + $translator = Translator::factory([ - 'locale' => 'de_DE', + 'locale' => 'de_DE', 'patterns' => [ [ - 'type' => 'phparray', + 'type' => 'phparray', 'base_dir' => $this->testFilesDir . '/testarray', 'pattern' => 'translation-%s.php', ], ], - 'cache' => [ - 'adapter' => 'memory', - ], + 'cache' => $cache, ]); self::assertInstanceOf(Translator::class, $translator); - self::assertInstanceOf(StorageInterface::class, $translator->getCache()); + $this->assertEquals($cache, $translator->getCache()); } public function testDefaultLocale(): void @@ -155,14 +155,14 @@ public function testForcedLocale(): void public function testTranslate(): void { - $loader = new TestLoader(); + $loader = new TestLoader(); $loader->textDomain = new TextDomain(['foo' => 'bar']); - $config = new Config([ + $config = new Config([ 'services' => [ 'test' => $loader, ], ]); - $pm = $this->translator->getPluginManager(); + $pm = $this->translator->getPluginManager(); $config->configureServiceManager($pm); $this->translator->setPluginManager($pm); $this->translator->addTranslationFile('test', null); @@ -172,10 +172,10 @@ public function testTranslate(): void public function testTranslationsLoadedFromCache(): void { - $cache = CacheFactory::factory(['adapter' => 'memory']); + $cache = new SimpleCacheDecorator(CacheFactory::factory(['adapter' => 'memory'])); $this->translator->setCache($cache); - $cache->addItem( + $cache->set( $this->translator->getCacheId('default', 'en_EN'), new TextDomain(['foo' => 'bar']) ); @@ -185,20 +185,20 @@ public function testTranslationsLoadedFromCache(): void public function testTranslationsAreStoredInCache(): void { - $cache = CacheFactory::factory(['adapter' => 'memory']); + $cache = new SimpleCacheDecorator(CacheFactory::factory(['adapter' => 'memory'])); $this->translator->setCache($cache); - $loader = new TestLoader(); + $loader = new TestLoader(); $loader->textDomain = new TextDomain(['foo' => 'bar']); - $config = new Config(['services' => ['test' => $loader]]); - $plugins = $this->translator->getPluginManager(); + $config = new Config(['services' => ['test' => $loader]]); + $plugins = $this->translator->getPluginManager(); $config->configureServiceManager($plugins); $this->translator->setPluginManager($plugins); $this->translator->addTranslationFile('test', null); self::assertEquals('bar', $this->translator->translate('foo')); - $item = $cache->getItem($this->translator->getCacheId('default', 'en_EN')); + $item = $cache->get($this->translator->getCacheId('default', 'en_EN')); self::assertInstanceOf(TextDomain::class, $item); self::assertEquals('bar', $item['foo']); } @@ -208,19 +208,18 @@ public function testTranslationsAreClearedFromCache(): void $textDomain = 'default'; $locale = 'en_EN'; - $cache = CacheFactory::factory(['adapter' => 'memory']); + $cache = new SimpleCacheDecorator(CacheFactory::factory(['adapter' => 'memory'])); $this->translator->setCache($cache); - $cache->addItem( + $cache->set( $this->translator->getCacheId($textDomain, $locale), new TextDomain(['foo' => 'bar']) ); self::assertTrue($this->translator->clearCache($textDomain, $locale)); - $item = $cache->getItem($this->translator->getCacheId($textDomain, $locale), $success); - self::assertNull($item); - self::assertFalse($success); + $item = $cache->get($this->translator->getCacheId($textDomain, $locale)); + $this->assertNull($item); } public function testClearCacheReturnsFalseIfNoCacheIsPresent(): void @@ -398,7 +397,7 @@ static function (EventInterface $event) use (&$actualEvent) { public function testListenerOnMissingTranslationEventCanReturnString(): void { - $trigger = null; + $trigger = null; $doNotTrigger = null; $this->translator->enableEventManager(); @@ -535,14 +534,14 @@ public function testGetAllMessagesReturnsNullWhenGivenLocaleNotExist(): void public function testNullMessageArgumentShouldReturnAnEmptyString(): void { - $loader = new TestLoader(); + $loader = new TestLoader(); $loader->textDomain = new TextDomain(['foo' => 'bar']); $config = new Config([ 'services' => [ 'test' => $loader, ], ]); - $pm = $this->translator->getPluginManager(); + $pm = $this->translator->getPluginManager(); $config->configureServiceManager($pm); $this->translator->setPluginManager($pm); $this->translator->addTranslationFile('test', null); From f83265bbb61eb5f7b330b92bb46954c4ca7fcb6f Mon Sep 17 00:00:00 2001 From: Adrien Crivelli Date: Thu, 25 Apr 2024 15:04:35 +0700 Subject: [PATCH 2/7] Code style Signed-off-by: Adrien Crivelli --- src/Translator/Translator.php | 9 +++--- test/Translator/TranslatorTest.php | 46 +++++++++++++++--------------- 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/src/Translator/Translator.php b/src/Translator/Translator.php index 5bbac4fa..e2481971 100644 --- a/src/Translator/Translator.php +++ b/src/Translator/Translator.php @@ -16,8 +16,10 @@ use function array_shift; use function get_debug_type; +use function gettype; use function is_array; use function is_file; +use function is_object; use function is_string; use function md5; use function rtrim; @@ -219,12 +221,12 @@ public static function factory($options) // cache if (isset($options['cache'])) { - if (! ($options['cache'] instanceof CacheInterface)) { + if (! $options['cache'] instanceof CacheInterface) { throw new Exception\InvalidArgumentException(sprintf( '%s expects a %s instance; received "%s"', __METHOD__, CacheInterface::class, - (is_object($options) ? get_class($options) : gettype($options)) + is_object($options) ? $options::class : gettype($options) )); } $translator->setCache($options['cache']); @@ -291,7 +293,6 @@ public function getFallbackLocale() /** * Sets a cache * - * @param CacheInterface|null $cache * @return $this */ public function setCache(?CacheInterface $cache = null) @@ -503,7 +504,7 @@ public function addTranslationFile( } $this->files[$textDomain][$locale][] = [ - 'type' => $type, + 'type' => $type, 'filename' => $filename, ]; diff --git a/test/Translator/TranslatorTest.php b/test/Translator/TranslatorTest.php index bf9396d2..a17371e6 100644 --- a/test/Translator/TranslatorTest.php +++ b/test/Translator/TranslatorTest.php @@ -4,9 +4,9 @@ namespace LaminasTest\I18n\Translator; +use Laminas\Cache\Psr\SimpleCache\SimpleCacheDecorator; use Laminas\Cache\StorageFactory as CacheFactory; use Laminas\EventManager\Event; -use Laminas\Cache\Psr\SimpleCache\SimpleCacheDecorator; use Laminas\EventManager\EventInterface; use Laminas\I18n\Translator\TextDomain; use Laminas\I18n\Translator\Translator; @@ -23,7 +23,7 @@ class TranslatorTest extends TestCase protected function setUp(): void { parent::setUp(); - $this->translator = new Translator(); + $this->translator = new Translator(); Locale::setDefault('en_EN'); $this->testFilesDir = __DIR__ . '/_files'; } @@ -31,17 +31,17 @@ protected function setUp(): void public function testFactoryCreatesTranslator(): void { $translator = Translator::factory([ - 'locale' => 'de_DE', + 'locale' => 'de_DE', 'patterns' => [ [ - 'type' => 'phparray', + 'type' => 'phparray', 'base_dir' => $this->testFilesDir . '/testarray', 'pattern' => 'translation-%s.php', ], ], - 'files' => [ + 'files' => [ [ - 'type' => 'phparray', + 'type' => 'phparray', 'filename' => $this->testFilesDir . '/translation_en.php', ], ], @@ -54,15 +54,15 @@ public function testFactoryCreatesTranslator(): void public function testTranslationFromSeveralTranslationFiles(): void { $translator = Translator::factory([ - 'locale' => 'de_DE', + 'locale' => 'de_DE', 'translation_file_patterns' => [ [ - 'type' => 'phparray', + 'type' => 'phparray', 'base_dir' => $this->testFilesDir . '/testarray', 'pattern' => 'translation-%s.php', ], [ - 'type' => 'phparray', + 'type' => 'phparray', 'base_dir' => $this->testFilesDir . '/testarray', 'pattern' => 'translation-more-%s.php', ], @@ -102,7 +102,7 @@ public function testTranslationFromSeveralTranslationFiles(): void public function testTranslationFromDifferentSourceTypes(): void { $translator = Translator::factory([ - 'locale' => 'de_DE', + 'locale' => 'de_DE', 'translation_file_patterns' => [ [ 'type' => 'phparray', @@ -110,7 +110,7 @@ public function testTranslationFromDifferentSourceTypes(): void 'pattern' => 'translation-de_DE.php', ], ], - 'translation_files' => [ + 'translation_files' => [ [ 'type' => 'phparray', 'filename' => $this->testFilesDir . '/testarray/translation-more-de_DE.php', @@ -127,15 +127,15 @@ public function testFactoryCreatesTranslatorWithCache(): void $cache = new SimpleCacheDecorator(CacheFactory::factory(['adapter' => 'memory'])); $translator = Translator::factory([ - 'locale' => 'de_DE', + 'locale' => 'de_DE', 'patterns' => [ [ - 'type' => 'phparray', + 'type' => 'phparray', 'base_dir' => $this->testFilesDir . '/testarray', 'pattern' => 'translation-%s.php', ], ], - 'cache' => $cache, + 'cache' => $cache, ]); self::assertInstanceOf(Translator::class, $translator); @@ -155,14 +155,14 @@ public function testForcedLocale(): void public function testTranslate(): void { - $loader = new TestLoader(); + $loader = new TestLoader(); $loader->textDomain = new TextDomain(['foo' => 'bar']); - $config = new Config([ + $config = new Config([ 'services' => [ 'test' => $loader, ], ]); - $pm = $this->translator->getPluginManager(); + $pm = $this->translator->getPluginManager(); $config->configureServiceManager($pm); $this->translator->setPluginManager($pm); $this->translator->addTranslationFile('test', null); @@ -188,10 +188,10 @@ public function testTranslationsAreStoredInCache(): void $cache = new SimpleCacheDecorator(CacheFactory::factory(['adapter' => 'memory'])); $this->translator->setCache($cache); - $loader = new TestLoader(); + $loader = new TestLoader(); $loader->textDomain = new TextDomain(['foo' => 'bar']); - $config = new Config(['services' => ['test' => $loader]]); - $plugins = $this->translator->getPluginManager(); + $config = new Config(['services' => ['test' => $loader]]); + $plugins = $this->translator->getPluginManager(); $config->configureServiceManager($plugins); $this->translator->setPluginManager($plugins); $this->translator->addTranslationFile('test', null); @@ -397,7 +397,7 @@ static function (EventInterface $event) use (&$actualEvent) { public function testListenerOnMissingTranslationEventCanReturnString(): void { - $trigger = null; + $trigger = null; $doNotTrigger = null; $this->translator->enableEventManager(); @@ -534,14 +534,14 @@ public function testGetAllMessagesReturnsNullWhenGivenLocaleNotExist(): void public function testNullMessageArgumentShouldReturnAnEmptyString(): void { - $loader = new TestLoader(); + $loader = new TestLoader(); $loader->textDomain = new TextDomain(['foo' => 'bar']); $config = new Config([ 'services' => [ 'test' => $loader, ], ]); - $pm = $this->translator->getPluginManager(); + $pm = $this->translator->getPluginManager(); $config->configureServiceManager($pm); $this->translator->setPluginManager($pm); $this->translator->addTranslationFile('test', null); From b0408853bcf90a70fccf36d93403c83db465dbc3 Mon Sep 17 00:00:00 2001 From: Adrien Crivelli Date: Thu, 25 Apr 2024 15:19:55 +0700 Subject: [PATCH 3/7] Psalm fixes Signed-off-by: Adrien Crivelli --- src/Translator/Translator.php | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/Translator/Translator.php b/src/Translator/Translator.php index e2481971..8deef8c2 100644 --- a/src/Translator/Translator.php +++ b/src/Translator/Translator.php @@ -221,15 +221,7 @@ public static function factory($options) // cache if (isset($options['cache'])) { - if (! $options['cache'] instanceof CacheInterface) { - throw new Exception\InvalidArgumentException(sprintf( - '%s expects a %s instance; received "%s"', - __METHOD__, - CacheInterface::class, - is_object($options) ? $options::class : gettype($options) - )); - } - $translator->setCache($options['cache']); + $translator->setCache($options['cache']); } // event manager enabled From 0e68a4026654d9bdf29e2f99e7a81b2d519e9b98 Mon Sep 17 00:00:00 2001 From: Adrien Crivelli Date: Thu, 25 Apr 2024 15:21:50 +0700 Subject: [PATCH 4/7] Assert identity Signed-off-by: Adrien Crivelli --- test/Translator/TranslatorTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Translator/TranslatorTest.php b/test/Translator/TranslatorTest.php index a17371e6..da406ccb 100644 --- a/test/Translator/TranslatorTest.php +++ b/test/Translator/TranslatorTest.php @@ -139,7 +139,7 @@ public function testFactoryCreatesTranslatorWithCache(): void ]); self::assertInstanceOf(Translator::class, $translator); - $this->assertEquals($cache, $translator->getCache()); + $this->assertSame($cache, $translator->getCache()); } public function testDefaultLocale(): void From b5cd55febcf897ec244d8d893ceeb83e11235c0d Mon Sep 17 00:00:00 2001 From: Adrien Crivelli Date: Thu, 25 Apr 2024 15:24:13 +0700 Subject: [PATCH 5/7] Code style Signed-off-by: Adrien Crivelli --- src/Translator/Translator.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Translator/Translator.php b/src/Translator/Translator.php index 8deef8c2..5406550a 100644 --- a/src/Translator/Translator.php +++ b/src/Translator/Translator.php @@ -16,10 +16,8 @@ use function array_shift; use function get_debug_type; -use function gettype; use function is_array; use function is_file; -use function is_object; use function is_string; use function md5; use function rtrim; From 214841f6c49a2c70f8fce65a69eaf9e05d16cb54 Mon Sep 17 00:00:00 2001 From: Adrien Crivelli Date: Thu, 25 Apr 2024 15:33:26 +0700 Subject: [PATCH 6/7] Drop dev dep on laminas-cache-storage-deprecated-factory Signed-off-by: Adrien Crivelli --- composer.json | 1 - composer.lock | 61 +----------------------------- test/Translator/TranslatorTest.php | 10 ++--- 3 files changed, 6 insertions(+), 66 deletions(-) diff --git a/composer.json b/composer.json index adf69983..e210bd59 100644 --- a/composer.json +++ b/composer.json @@ -41,7 +41,6 @@ "require-dev": { "laminas/laminas-cache": "^3.12.1", "laminas/laminas-cache-storage-adapter-memory": "^2.3.0", - "laminas/laminas-cache-storage-deprecated-factory": "^1.2", "laminas/laminas-coding-standard": "~2.5.0", "laminas/laminas-config": "^3.9.0", "laminas/laminas-eventmanager": "^3.13", diff --git a/composer.lock b/composer.lock index c02463a1..624eb957 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "0e9d1dcf1a7ded07aa7cdfc6056e250c", + "content-hash": "34e420973a6a579c4fd6fb930fc5f68b", "packages": [ { "name": "laminas/laminas-servicemanager", @@ -1149,65 +1149,6 @@ ], "time": "2023-10-18T09:43:33+00:00" }, - { - "name": "laminas/laminas-cache-storage-deprecated-factory", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-cache-storage-deprecated-factory.git", - "reference": "276ffbb6c01400fb071d8f6167650e6112d2de2f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-cache-storage-deprecated-factory/zipball/276ffbb6c01400fb071d8f6167650e6112d2de2f", - "reference": "276ffbb6c01400fb071d8f6167650e6112d2de2f", - "shasum": "" - }, - "require": { - "laminas/laminas-cache": "^3.0", - "laminas/laminas-servicemanager": "^3.7", - "laminas/laminas-stdlib": "^3.6", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", - "webmozart/assert": "^1.10" - }, - "require-dev": { - "laminas/laminas-cache-storage-adapter-apcu": "^2.4", - "laminas/laminas-cache-storage-adapter-blackhole": "^2.2", - "laminas/laminas-cache-storage-adapter-ext-mongodb": "^2.3", - "laminas/laminas-cache-storage-adapter-filesystem": "^2.3", - "laminas/laminas-cache-storage-adapter-memcached": "^2.4", - "laminas/laminas-cache-storage-adapter-memory": "^2.2", - "laminas/laminas-cache-storage-adapter-redis": "^2.5", - "laminas/laminas-cache-storage-adapter-session": "^2.3", - "laminas/laminas-coding-standard": "2.3", - "laminas/laminas-serializer": "^2.14", - "phpunit/phpunit": "^9.5.27", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Temporary storage adapter factory for fluent migration to laminas-cache v3 when working with laminas components which depend on laminas-cache", - "support": { - "issues": "https://github.com/laminas/laminas-cache-storage-deprecated-factory/issues", - "source": "https://github.com/laminas/laminas-cache-storage-deprecated-factory/tree/1.2.0" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2024-01-08T14:30:59+00:00" - }, { "name": "laminas/laminas-coding-standard", "version": "2.5.0", diff --git a/test/Translator/TranslatorTest.php b/test/Translator/TranslatorTest.php index da406ccb..d60ab2b6 100644 --- a/test/Translator/TranslatorTest.php +++ b/test/Translator/TranslatorTest.php @@ -5,7 +5,7 @@ namespace LaminasTest\I18n\Translator; use Laminas\Cache\Psr\SimpleCache\SimpleCacheDecorator; -use Laminas\Cache\StorageFactory as CacheFactory; +use Laminas\Cache\Storage\Adapter\Memory; use Laminas\EventManager\Event; use Laminas\EventManager\EventInterface; use Laminas\I18n\Translator\TextDomain; @@ -124,7 +124,7 @@ public function testTranslationFromDifferentSourceTypes(): void public function testFactoryCreatesTranslatorWithCache(): void { - $cache = new SimpleCacheDecorator(CacheFactory::factory(['adapter' => 'memory'])); + $cache = new SimpleCacheDecorator(new Memory()); $translator = Translator::factory([ 'locale' => 'de_DE', @@ -172,7 +172,7 @@ public function testTranslate(): void public function testTranslationsLoadedFromCache(): void { - $cache = new SimpleCacheDecorator(CacheFactory::factory(['adapter' => 'memory'])); + $cache = new SimpleCacheDecorator(new Memory()); $this->translator->setCache($cache); $cache->set( @@ -185,7 +185,7 @@ public function testTranslationsLoadedFromCache(): void public function testTranslationsAreStoredInCache(): void { - $cache = new SimpleCacheDecorator(CacheFactory::factory(['adapter' => 'memory'])); + $cache = new SimpleCacheDecorator(new Memory()); $this->translator->setCache($cache); $loader = new TestLoader(); @@ -208,7 +208,7 @@ public function testTranslationsAreClearedFromCache(): void $textDomain = 'default'; $locale = 'en_EN'; - $cache = new SimpleCacheDecorator(CacheFactory::factory(['adapter' => 'memory'])); + $cache = new SimpleCacheDecorator(new Memory()); $this->translator->setCache($cache); $cache->set( From 088361cd28b2aae069ecf0740fac685db6ad66d7 Mon Sep 17 00:00:00 2001 From: Adrien Crivelli Date: Thu, 25 Apr 2024 15:39:05 +0700 Subject: [PATCH 7/7] Don't promote laminas-cache-storage-deprecated-factory in documentation Signed-off-by: Adrien Crivelli --- docs/book/translator/caching.md | 13 ++++--------- docs/book/translator/factory.md | 13 ++++--------- 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/docs/book/translator/caching.md b/docs/book/translator/caching.md index a1f63484..4c53b017 100755 --- a/docs/book/translator/caching.md +++ b/docs/book/translator/caching.md @@ -14,16 +14,11 @@ The following example is based on the use of the ```php $translator = new Laminas\I18n\Translator\Translator(); -$cacheStorage = Laminas\Cache\StorageFactory::factory([ - 'adapter' => [ - 'name' => Laminas\Cache\Storage\Adapter\Filesystem::class, - 'options' => [ - 'cache_dir' => __DIR__ . '/cache', - ], - ], +$cacheStorage = new Laminas\Cache\Storage\Adapter\Filesystem([ + 'cache_dir' => __DIR__ . '/cache', ]); -$cache = new Laminas\Cache\Psr\SimpleCache\SimpleCacheDecorator(cacheStorage); -$translator->setCache($cache); +$cache = new Laminas\Cache\Psr\SimpleCache\SimpleCacheDecorator($cacheStorage); +$translator->setCache($cache);`` ``` The explanation of creating a cache and using different adapters for caching diff --git a/docs/book/translator/factory.md b/docs/book/translator/factory.md index 133638f7..9dc5e6e2 100755 --- a/docs/book/translator/factory.md +++ b/docs/book/translator/factory.md @@ -119,16 +119,11 @@ The following example is based on the use of the [laminas-cache](https://docs.laminas.dev/laminas-cache/) component. ```php -$translator = new Laminas\I18n\Translator\Translator(); -$cacheStorage = Laminas\Cache\StorageFactory::factory([ - 'adapter' => [ - 'name' => Laminas\Cache\Storage\Adapter\Filesystem::class, - 'options' => [ - 'cache_dir' => __DIR__ . '/cache', - ], - ], +$translator = new Laminas\I18n\Translator\Translator(); +$cacheStorage = new Laminas\Cache\Storage\Adapter\Filesystem([ + 'cache_dir' => __DIR__ . '/cache', ]); -$cache = new Laminas\Cache\Psr\SimpleCache\SimpleCacheDecorator(cacheStorage); +$cache = new Laminas\Cache\Psr\SimpleCache\SimpleCacheDecorator($cacheStorage); $translator = Laminas\I18n\Translator\Translator::factory([ 'cache' => $cache, ]);