From 9381b2df7ea5fffe84da7cd9e00f100c67c51dd7 Mon Sep 17 00:00:00 2001 From: Greg ORIOL Date: Mon, 25 Jan 2016 02:47:52 +0100 Subject: [PATCH 01/15] Added database driver option to redis cache # Conflicts: # src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php --- .../Provider/DoctrineOrm/DoctrineOrmServiceProvider.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php b/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php index fe28d94..ab3c054 100755 --- a/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php +++ b/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php @@ -307,6 +307,10 @@ public function register(Container $container) $redis->auth($cacheOptions['password']); } + if (isset($cacheOptions['database'])) { + $redis->select($cacheOptions['database']); + } + $cache = new RedisCache; $cache->setRedis($redis); From cbf849e7a23ff71ea2b563c9d87e796b6784af73 Mon Sep 17 00:00:00 2001 From: Greg ORIOL Date: Mon, 25 Jan 2016 02:49:27 +0100 Subject: [PATCH 02/15] Added per driver cache namespace definition # Conflicts: # src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php --- .../Provider/DoctrineOrm/DoctrineOrmServiceProvider.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php b/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php index ab3c054..3d83ae4 100755 --- a/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php +++ b/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php @@ -245,8 +245,12 @@ public function register(Container $container) $cache = $container['orm.cache.factory']($driver, $options[$cacheNameKey]); - if (isset($options['cache_namespace']) && $cache instanceof CacheProvider) { - $cache->setNamespace($options['cache_namespace']); + if ($cache instanceof CacheProvider) { + if (isset($options[$cacheNameKey]['namespace'])) { + $cache->setNamespace($options[$cacheNameKey]['namespace']); + } elseif (isset($options['cache_namespace'])) { + $cache->setNamespace($options['cache_namespace']); + } } return $container[$cacheInstanceKey] = $cache; From 4149ee51d00a76aeb35ba7339af7d35aa839876a Mon Sep 17 00:00:00 2001 From: Greg ORIOL Date: Mon, 25 Jan 2016 03:09:02 +0100 Subject: [PATCH 03/15] Updated information on cache configuration in the README --- README.md | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3479ada..92a40ab 100644 --- a/README.md +++ b/README.md @@ -187,7 +187,9 @@ Configuration String or array describing result cache implementation. * **hydration_cache** (Default: setting specified by orm.default_cache): String or array describing hydration cache implementation. - * **types** + * **cache_namespace**: + String to define a global namespace for cached keys. + * **types**: An array of custom types in the format of 'typeName' => 'Namespace\To\Type\Class' * **orm.ems.options**: Array of Entity Manager configuration sets indexed by each Entity Manager's @@ -234,6 +236,31 @@ Configuration `Doctrine\ORM\Mapping\EntityListenerResolver`. * **orm.default_cache**: String or array describing default cache implementation. + + Example configuration: + ```php + 'array', + // or + 'orm.default_cache' => array('driver' => 'array'), + + // or redis cache defined as metadata cache on the default em + 'default' => array( + ... + 'metadata_cache' => array( + 'driver' => 'redis', + 'host' => '127.0.0.1', // mandatory redis host + 'port' => 6379, // mandatory redis port + 'password' => 'mypassword', // optional redis password + 'database' => 1, // optional redis database, default: 0 + 'namespace' => 'MYNAMESPACE:' // optional namespace for this cache, otherwise cache_namespace from the current em will be used + ) + ... + ) + ); + ``` * **orm.add_mapping_driver**: Function providing the ability to add a mapping driver to an Entity Manager. From d067b583915fd9695bc1de24eb7490c01731f28f Mon Sep 17 00:00:00 2001 From: Greg ORIOL Date: Fri, 13 Dec 2019 12:26:05 +0100 Subject: [PATCH 04/15] Updated MappingDriver namespace --- .../Provider/DoctrineOrm/DoctrineOrmServiceProvider.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php b/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php index 3d83ae4..5aa515b 100755 --- a/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php +++ b/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php @@ -20,8 +20,8 @@ use Doctrine\Common\Cache\CouchbaseCache; use Doctrine\Common\Cache\XcacheCache; use Doctrine\Common\Cache\RedisCache; -use Doctrine\Common\Persistence\Mapping\Driver\MappingDriver; -use Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain; +use Doctrine\Persistence\Mapping\Driver\MappingDriver; +use Doctrine\Persistence\Mapping\Driver\MappingDriverChain; use Doctrine\DBAL\Types\Type; use Doctrine\ORM\Configuration; use Doctrine\ORM\EntityManager; From b51eccdf9dcde7257a7147cefef7f8217fee6f71 Mon Sep 17 00:00:00 2001 From: Greg ORIOL Date: Fri, 30 Oct 2020 14:40:58 +0100 Subject: [PATCH 05/15] Updated version --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 31c1f89..ce2c225 100644 --- a/composer.json +++ b/composer.json @@ -28,7 +28,7 @@ }, "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "2.5.x-dev" } } } From 1c5463120f20a90fe58130cb2d326267bddcd61f Mon Sep 17 00:00:00 2001 From: Greg ORIOL Date: Mon, 12 Jul 2021 15:28:42 +0200 Subject: [PATCH 06/15] Forced doctrine cache version to 1.x because 2.x is broken (https://github.com/doctrine/cache/issues/354) --- composer.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index ce2c225..5b0dba8 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,8 @@ "require": { "php": ">=5.3.3", "pimple/pimple": ">=2.1,<4", - "doctrine/orm": "~2.3" + "doctrine/orm": "~2.3", + "doctrine/cache": "^1.11.3" }, "autoload": { "psr-4": { From 74a77c855288846fdfa09a90d2e531106520ff06 Mon Sep 17 00:00:00 2001 From: Greg ORIOL Date: Mon, 12 Jul 2021 15:42:12 +0200 Subject: [PATCH 07/15] Cleanup --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 5b0dba8..1b77106 100644 --- a/composer.json +++ b/composer.json @@ -20,7 +20,7 @@ "php": ">=5.3.3", "pimple/pimple": ">=2.1,<4", "doctrine/orm": "~2.3", - "doctrine/cache": "^1.11.3" + "doctrine/cache": "^1.11" }, "autoload": { "psr-4": { From 12227a02fe233901046248774b6a6439487d9fda Mon Sep 17 00:00:00 2001 From: Greg ORIOL Date: Fri, 6 Aug 2021 10:20:23 +0200 Subject: [PATCH 08/15] Changed doctrine orm requirement style --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 1b77106..06d2b24 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,7 @@ "require": { "php": ">=5.3.3", "pimple/pimple": ">=2.1,<4", - "doctrine/orm": "~2.3", + "doctrine/orm": "^2.3", "doctrine/cache": "^1.11" }, "autoload": { From 3132ad4dcf7c671115da0b89ac9bff98b46163fe Mon Sep 17 00:00:00 2001 From: Greg ORIOL Date: Wed, 11 May 2022 15:30:30 +0200 Subject: [PATCH 09/15] Added attribute mapping driver --- .../Provider/DoctrineOrm/DoctrineOrmServiceProvider.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php b/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php index 5aa515b..bc27768 100755 --- a/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php +++ b/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php @@ -28,6 +28,7 @@ use Doctrine\ORM\Mapping\DefaultEntityListenerResolver; use Doctrine\ORM\Mapping\DefaultNamingStrategy; use Doctrine\ORM\Mapping\DefaultQuoteStrategy; +use Doctrine\ORM\Mapping\Driver\AttributeDriver; use Doctrine\ORM\Mapping\Driver\Driver; use Doctrine\ORM\Mapping\Driver\SimplifiedXmlDriver; use Doctrine\ORM\Mapping\Driver\SimplifiedYamlDriver; @@ -163,6 +164,10 @@ public function register(Container $container) } switch ($entity['type']) { + case 'attribute': + $driver = new AttributeDriver(array($entity['path'])); + $chain->addDriver($driver, $entity['namespace']); + break; case 'annotation': $useSimpleAnnotationReader = isset($entity['use_simple_annotation_reader']) From 8ae18e90e68552e49a673a762922db9b4e954702 Mon Sep 17 00:00:00 2001 From: Greg ORIOL Date: Wed, 11 May 2022 15:32:20 +0200 Subject: [PATCH 10/15] Enhanced gitignore --- .gitignore | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.gitignore b/.gitignore index 987e2a2..cd26482 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,10 @@ +# System, IDE, ... +.DS_Store +.idea +.vagrant +.bundle + +# Composer +composer.phar composer.lock vendor From 580e542add2184b1484f32f08d8948f1d82b7e08 Mon Sep 17 00:00:00 2001 From: Greg ORIOL Date: Mon, 30 Jan 2023 15:17:52 +0100 Subject: [PATCH 11/15] Upgrade to remove doctrine/cache and replace it with symfony/cache, tests for phpunit 9 --- composer.json | 6 +- .../DoctrineOrmServiceProvider.php | 100 +++++------------- .../DoctrineOrmServiceProviderTest.php | 69 ++++++------ 3 files changed, 66 insertions(+), 109 deletions(-) diff --git a/composer.json b/composer.json index 06d2b24..4f54665 100644 --- a/composer.json +++ b/composer.json @@ -20,7 +20,11 @@ "php": ">=5.3.3", "pimple/pimple": ">=2.1,<4", "doctrine/orm": "^2.3", - "doctrine/cache": "^1.11" + "symfony/cache": "^5.0|^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.4", + "doctrine/annotations": "^2.0" }, "autoload": { "psr-4": { diff --git a/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php b/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php index bc27768..5e8c164 100755 --- a/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php +++ b/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php @@ -11,15 +11,7 @@ namespace Dflydev\Provider\DoctrineOrm; -use Doctrine\Common\Cache\ApcCache; -use Doctrine\Common\Cache\ArrayCache; -use Doctrine\Common\Cache\CacheProvider; -use Doctrine\Common\Cache\FilesystemCache; -use Doctrine\Common\Cache\MemcacheCache; -use Doctrine\Common\Cache\MemcachedCache; -use Doctrine\Common\Cache\CouchbaseCache; -use Doctrine\Common\Cache\XcacheCache; -use Doctrine\Common\Cache\RedisCache; +use Doctrine\ORM\ORMSetup; use Doctrine\Persistence\Mapping\Driver\MappingDriver; use Doctrine\Persistence\Mapping\Driver\MappingDriverChain; use Doctrine\DBAL\Types\Type; @@ -34,10 +26,17 @@ use Doctrine\ORM\Mapping\Driver\SimplifiedYamlDriver; use Doctrine\ORM\Mapping\Driver\XmlDriver; use Doctrine\ORM\Mapping\Driver\YamlDriver; -use Doctrine\ORM\Mapping\Driver\StaticPHPDriver; +use Doctrine\Persistence\Mapping\Driver\StaticPHPDriver; use Doctrine\ORM\Repository\DefaultRepositoryFactory; use Pimple\Container; use Pimple\ServiceProviderInterface; +use Symfony\Component\Cache\Adapter\ApcuAdapter; +use Symfony\Component\Cache\Adapter\ArrayAdapter; +use Symfony\Component\Cache\Adapter\CouchbaseBucketAdapter; +use Symfony\Component\Cache\Adapter\CouchbaseCollectionAdapter; +use Symfony\Component\Cache\Adapter\FilesystemAdapter; +use Symfony\Component\Cache\Adapter\MemcachedAdapter; +use Symfony\Component\Cache\Adapter\RedisAdapter; /** * Doctrine ORM Pimple Service Provider. @@ -169,19 +168,11 @@ public function register(Container $container) $chain->addDriver($driver, $entity['namespace']); break; case 'annotation': - $useSimpleAnnotationReader = - isset($entity['use_simple_annotation_reader']) - ? $entity['use_simple_annotation_reader'] - : true; - $driver = $config->newDefaultAnnotationDriver((array) $entity['path'], $useSimpleAnnotationReader); - $chain->addDriver($driver, $entity['namespace']); - break; - case 'yml': - $driver = new YamlDriver($entity['path']); - $chain->addDriver($driver, $entity['namespace']); - break; - case 'simple_yml': - $driver = new SimplifiedYamlDriver(array($entity['path'] => $entity['namespace'])); + $annotationsCache = null; + if ($entity['cache'] !== null) { + $annotationsCache = $entity['cache']; + } + $driver = ORMSetup::createDefaultAnnotationDriver((array) $entity['path'], $annotationsCache); $chain->addDriver($driver, $entity['namespace']); break; case 'xml': @@ -218,10 +209,10 @@ public function register(Container $container) }; $container['orm.cache.configurer'] = $container->protect(function ($name, Configuration $config, $options) use ($container) { - $config->setMetadataCacheImpl($container['orm.cache.locator']($name, 'metadata', $options)); - $config->setQueryCacheImpl($container['orm.cache.locator']($name, 'query', $options)); - $config->setResultCacheImpl($container['orm.cache.locator']($name, 'result', $options)); - $config->setHydrationCacheImpl($container['orm.cache.locator']($name, 'hydration', $options)); + $config->setMetadataCache($container['orm.cache.locator']($name, 'metadata', $options)); + $config->setQueryCache($container['orm.cache.locator']($name, 'query', $options)); + $config->setResultCache($container['orm.cache.locator']($name, 'result', $options)); + $config->setHydrationCache($container['orm.cache.locator']($name, 'hydration', $options)); }); $container['orm.cache.locator'] = $container->protect(function ($name, $cacheName, $options) use ($container) { @@ -250,14 +241,6 @@ public function register(Container $container) $cache = $container['orm.cache.factory']($driver, $options[$cacheNameKey]); - if ($cache instanceof CacheProvider) { - if (isset($options[$cacheNameKey]['namespace'])) { - $cache->setNamespace($options[$cacheNameKey]['namespace']); - } elseif (isset($options['cache_namespace'])) { - $cache->setNamespace($options['cache_namespace']); - } - } - return $container[$cacheInstanceKey] = $cache; }); @@ -274,8 +257,7 @@ public function register(Container $container) $memcache = $container['orm.cache.factory.backing_memcache'](); $memcache->connect($cacheOptions['host'], $cacheOptions['port']); - $cache = new MemcacheCache; - $cache->setMemcache($memcache); + $cache = new MemcachedAdapter($memcache, $cacheOptions['namespace']); return $cache; }); @@ -293,8 +275,7 @@ public function register(Container $container) $memcached = $container['orm.cache.factory.backing_memcached'](); $memcached->addServer($cacheOptions['host'], $cacheOptions['port']); - $cache = new MemcachedCache; - $cache->setMemcached($memcached); + $cache = new MemcachedAdapter($memcached, $cacheOptions['namespace']); return $cache; }); @@ -320,22 +301,17 @@ public function register(Container $container) $redis->select($cacheOptions['database']); } - $cache = new RedisCache; - $cache->setRedis($redis); + $cache = new RedisAdapter($redis, $cacheOptions['namespace']); return $cache; }); $container['orm.cache.factory.array'] = $container->protect(function () { - return new ArrayCache; + return new ArrayAdapter(); }); $container['orm.cache.factory.apc'] = $container->protect(function () { - return new ApcCache; - }); - - $container['orm.cache.factory.xcache'] = $container->protect(function () { - return new XcacheCache; + return new ApcuAdapter($cacheOptions['namespace']); }); $container['orm.cache.factory.filesystem'] = $container->protect(function ($cacheOptions) { @@ -343,35 +319,7 @@ public function register(Container $container) throw new \RuntimeException('FilesystemCache path not defined'); } - $cacheOptions += array( - 'extension' => FilesystemCache::EXTENSION, - 'umask' => 0002, - ); - return new FilesystemCache($cacheOptions['path'], $cacheOptions['extension'], $cacheOptions['umask']); - }); - - $container['orm.cache.factory.couchbase'] = $container->protect(function($cacheOptions){ - $host=''; - $bucketName=''; - $user=''; - $password=''; - if (empty($cacheOptions['host'])) { - $host='127.0.0.1'; - } - if (empty($cacheOptions['bucket'])) { - $bucketName='default'; - } - if (!empty($cacheOptions['user'])) { - $user=$cacheOptions['user']; - } - if (!empty($cacheOptions['password'])) { - $password=$cacheOptions['password']; - } - - $couchbase = new \Couchbase($host,$user,$password,$bucketName); - $cache = new CouchbaseCache(); - $cache->setCouchbase($couchbase); - return $cache; + return new FilesystemAdapter($cacheOptions['namespace'], 0, $cacheOptions['path']); }); $container['orm.cache.factory'] = $container->protect(function ($driver, $cacheOptions) use ($container) { diff --git a/tests/Dflydev/Tests/Provider/DoctrineOrm/DoctrineOrmServiceProviderTest.php b/tests/Dflydev/Tests/Provider/DoctrineOrm/DoctrineOrmServiceProviderTest.php index 4715c72..3b51ea0 100644 --- a/tests/Dflydev/Tests/Provider/DoctrineOrm/DoctrineOrmServiceProviderTest.php +++ b/tests/Dflydev/Tests/Provider/DoctrineOrm/DoctrineOrmServiceProviderTest.php @@ -13,19 +13,20 @@ use Dflydev\Provider\DoctrineOrm\DoctrineOrmServiceProvider; use Pimple\Container; +use PHPUnit\Framework\TestCase; /** * DoctrineOrmServiceProvider Test. * * @author Beau Simensen */ -class DoctrineOrmServiceProviderTest extends \PHPUnit_Framework_TestCase +class DoctrineOrmServiceProviderTest extends TestCase { protected function createMockDefaultAppAndDeps() { $container = new Container(); - $eventManager = $this->getMock('Doctrine\Common\EventManager'); + $eventManager = $this->getMockBuilder(\Doctrine\Common\EventManager::class)->getMock(); $connection = $this ->getMockBuilder('Doctrine\DBAL\Connection') ->disableOriginalConstructor() @@ -67,11 +68,11 @@ public function testRegisterDefaultImplementations() $container->register(new DoctrineOrmServiceProvider()); $this->assertEquals($container['orm.em'], $container['orm.ems']['default']); - $this->assertInstanceOf('Doctrine\Common\Cache\ArrayCache', $container['orm.em.config']->getQueryCacheImpl()); - $this->assertInstanceOf('Doctrine\Common\Cache\ArrayCache', $container['orm.em.config']->getResultCacheImpl()); - $this->assertInstanceOf('Doctrine\Common\Cache\ArrayCache', $container['orm.em.config']->getMetadataCacheImpl()); - $this->assertInstanceOf('Doctrine\Common\Cache\ArrayCache', $container['orm.em.config']->getHydrationCacheImpl()); - $this->assertInstanceOf('Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain', $container['orm.em.config']->getMetadataDriverImpl()); + $this->assertInstanceOf('Symfony\Component\Cache\Adapter\ArrayAdapter', $container['orm.em.config']->getQueryCache()); + $this->assertInstanceOf('Symfony\Component\Cache\Adapter\ArrayAdapter', $container['orm.em.config']->getResultCache()); + $this->assertInstanceOf('Symfony\Component\Cache\Adapter\ArrayAdapter', $container['orm.em.config']->getMetadataCache()); + $this->assertInstanceOf('Symfony\Component\Cache\Adapter\ArrayAdapter', $container['orm.em.config']->getHydrationCache()); + $this->assertInstanceOf('Doctrine\Persistence\Mapping\Driver\MappingDriverChain', $container['orm.em.config']->getMetadataDriverImpl()); } /** @@ -81,11 +82,11 @@ public function testRegisterDefinedImplementations() { $container = $this->createMockDefaultApp(); - $queryCache = $this->getMock('Doctrine\Common\Cache\ArrayCache'); - $resultCache = $this->getMock('Doctrine\Common\Cache\ArrayCache'); - $metadataCache = $this->getMock('Doctrine\Common\Cache\ArrayCache'); + $queryCache = $this->getMockBuilder(\Symfony\Component\Cache\Adapter\ArrayAdapter::class)->getMock(); + $resultCache = $this->getMockBuilder(\Symfony\Component\Cache\Adapter\ArrayAdapter::class)->getMock(); + $metadataCache = $this->getMockBuilder(\Symfony\Component\Cache\Adapter\ArrayAdapter::class)->getMock(); - $mappingDriverChain = $this->getMock('Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain'); + $mappingDriverChain = $this->getMockBuilder(\Doctrine\Persistence\Mapping\Driver\MappingDriverChain::class)->getMock(); $container['orm.cache.instances.default.query'] = $queryCache; $container['orm.cache.instances.default.result'] = $resultCache; @@ -96,9 +97,9 @@ public function testRegisterDefinedImplementations() $container->register(new DoctrineOrmServiceProvider); $this->assertEquals($container['orm.em'], $container['orm.ems']['default']); - $this->assertEquals($queryCache, $container['orm.em.config']->getQueryCacheImpl()); - $this->assertEquals($resultCache, $container['orm.em.config']->getResultCacheImpl()); - $this->assertEquals($metadataCache, $container['orm.em.config']->getMetadataCacheImpl()); + $this->assertEquals($queryCache, $container['orm.em.config']->getQueryCache()); + $this->assertEquals($resultCache, $container['orm.em.config']->getResultCache()); + $this->assertEquals($metadataCache, $container['orm.em.config']->getMetadataCache()); $this->assertEquals($mappingDriverChain, $container['orm.em.config']->getMetadataDriverImpl()); } @@ -111,7 +112,7 @@ public function testProxyConfigurationDefaults() $container->register(new DoctrineOrmServiceProvider); - $this->assertContains('/../../../../../../../cache/doctrine/proxies', $container['orm.em.config']->getProxyDir()); + $this->assertStringContainsString('/../../../../../../../cache/doctrine/proxies', $container['orm.em.config']->getProxyDir()); $this->assertEquals('DoctrineProxy', $container['orm.em.config']->getProxyNamespace()); $this->assertEquals(1,$container['orm.em.config']->getAutoGenerateProxyClasses()); } @@ -125,11 +126,11 @@ public function testProxyConfigurationDefined() $container->register(new DoctrineOrmServiceProvider); - $entityRepositoryClassName = get_class($this->getMock('Doctrine\Common\Persistence\ObjectRepository')); - $metadataFactoryName = get_class($this->getMock('Doctrine\Common\Persistence\Mapping\ClassMetadataFactory')); + $entityRepositoryClassName = get_class($this->getMockBuilder(\Doctrine\Persistence\ObjectRepository::class)->getMock()); + $metadataFactoryName = get_class($this->getMockBuilder(\Doctrine\Persistence\Mapping\ClassMetadataFactory::class)->getMock()); - $entityListenerResolver = $this->getMock('Doctrine\ORM\Mapping\EntityListenerResolver'); - $repositoryFactory = $this->getMock('Doctrine\ORM\Repository\RepositoryFactory'); + $entityListenerResolver = $this->getMockBuilder(\Doctrine\ORM\Mapping\EntityListenerResolver::class)->getMock(); + $repositoryFactory = $this->getMockBuilder(\Doctrine\ORM\Repository\RepositoryFactory::class)->getMock(); $container['orm.proxies_dir'] = '/path/to/proxies'; $container['orm.proxies_namespace'] = 'TestDoctrineOrmProxiesNamespace'; @@ -171,9 +172,9 @@ public function testAddMappingDriverDefault() { $container = $this->createMockDefaultApp(); - $mappingDriver = $this->getMock('Doctrine\Common\Persistence\Mapping\Driver\MappingDriver'); + $mappingDriver = $this->getMockBuilder(\Doctrine\Persistence\Mapping\Driver\MappingDriver::class)->getMock(); - $mappingDriverChain = $this->getMock('Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain'); + $mappingDriverChain = $this->getMockBuilder(\Doctrine\Persistence\Mapping\Driver\MappingDriverChain::class)->getMock(); $mappingDriverChain ->expects($this->once()) ->method('addDriver') @@ -193,9 +194,9 @@ public function testAddMappingDriverNamedEntityManager() { $container = $this->createMockDefaultApp(); - $mappingDriver = $this->getMock('Doctrine\Common\Persistence\Mapping\Driver\MappingDriver'); + $mappingDriver = $this->getMockBuilder(\Doctrine\Persistence\Mapping\Driver\MappingDriver::class)->getMock(); - $mappingDriverChain = $this->getMock('Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain'); + $mappingDriverChain = $this->getMockBuilder(\Doctrine\Persistence\Mapping\Driver\MappingDriverChain::class)->getMock(); $mappingDriverChain ->expects($this->once()) ->method('addDriver') @@ -286,9 +287,12 @@ public function testInvalidMappingAsOption() $container['orm.em.options'] = array( 'mappings' => array( - 'type' => 'annotation', - 'namespace' => 'Foo\Entities', - 'path' => __DIR__.'/src/Foo/Entities', + array( + 'type' => 'annotation', + 'namespace' => 'Foo\Entities', + 'path' => __DIR__.'/src/Foo/Entities', + 'cache' => null, + ), ), ); @@ -313,7 +317,8 @@ public function testMappingAlias() 'type' => 'annotation', 'namespace' => $namespace, 'path' => __DIR__.'/src/Foo/Entities', - 'alias' => $alias + 'alias' => $alias, + 'cache' => null, ) ), ); @@ -328,8 +333,8 @@ public function testStrategy() $doctrineOrmServiceProvider = new DoctrineOrmServiceProvider; $doctrineOrmServiceProvider->register($app); - $namingStrategy = $this->getMock('Doctrine\ORM\Mapping\DefaultNamingStrategy'); - $quoteStrategy = $this->getMock('Doctrine\ORM\Mapping\DefaultQuoteStrategy'); + $namingStrategy = $this->getMockBuilder(\Doctrine\ORM\Mapping\DefaultNamingStrategy::class)->getMock(); + $quoteStrategy = $this->getMockBuilder(\Doctrine\ORM\Mapping\DefaultQuoteStrategy::class)->getMock(); $app['orm.strategy.naming'] = $namingStrategy; $app['orm.strategy.quote'] = $quoteStrategy; @@ -345,9 +350,9 @@ public function testCustomFunctions() $doctrineOrmServiceProvider = new DoctrineOrmServiceProvider; $doctrineOrmServiceProvider->register($app); - $numericFunction = $this->getMock('Doctrine\ORM\Query\AST\Functions\FunctionNode', array(), array('mynum')); - $stringFunction = $this->getMock('Doctrine\ORM\Query\AST\Functions\FunctionNode', array(), array('mynum')); - $datetimeFunction = $this->getMock('Doctrine\ORM\Query\AST\Functions\FunctionNode', array(), array('mynum')); + $numericFunction = $this->getMockBuilder(\Doctrine\ORM\Query\AST\Functions\FunctionNode::class, array(), array('mynum')); + $stringFunction = $this->getMockBuilder(\Doctrine\ORM\Query\AST\Functions\FunctionNode::class, array(), array('mynum')); + $datetimeFunction = $this->getMockBuilder(\Doctrine\ORM\Query\AST\Functions\FunctionNode::class, array(), array('mynum')); $app['orm.custom.functions.string'] = array('mystring' => $numericFunction); $app['orm.custom.functions.numeric'] = array('mynumeric' => $stringFunction); From be5425cad07dd9154ffef4d7292904c639b150be Mon Sep 17 00:00:00 2001 From: Greg ORIOL Date: Mon, 30 Jan 2023 15:21:29 +0100 Subject: [PATCH 12/15] More tests cleanup --- .../DoctrineOrm/DoctrineOrmServiceProviderTest.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/Dflydev/Tests/Provider/DoctrineOrm/DoctrineOrmServiceProviderTest.php b/tests/Dflydev/Tests/Provider/DoctrineOrm/DoctrineOrmServiceProviderTest.php index 3b51ea0..d06cc87 100644 --- a/tests/Dflydev/Tests/Provider/DoctrineOrm/DoctrineOrmServiceProviderTest.php +++ b/tests/Dflydev/Tests/Provider/DoctrineOrm/DoctrineOrmServiceProviderTest.php @@ -28,7 +28,7 @@ protected function createMockDefaultAppAndDeps() $eventManager = $this->getMockBuilder(\Doctrine\Common\EventManager::class)->getMock(); $connection = $this - ->getMockBuilder('Doctrine\DBAL\Connection') + ->getMockBuilder(\Doctrine\DBAL\Connection::class) ->disableOriginalConstructor() ->getMock(); @@ -68,11 +68,11 @@ public function testRegisterDefaultImplementations() $container->register(new DoctrineOrmServiceProvider()); $this->assertEquals($container['orm.em'], $container['orm.ems']['default']); - $this->assertInstanceOf('Symfony\Component\Cache\Adapter\ArrayAdapter', $container['orm.em.config']->getQueryCache()); - $this->assertInstanceOf('Symfony\Component\Cache\Adapter\ArrayAdapter', $container['orm.em.config']->getResultCache()); - $this->assertInstanceOf('Symfony\Component\Cache\Adapter\ArrayAdapter', $container['orm.em.config']->getMetadataCache()); - $this->assertInstanceOf('Symfony\Component\Cache\Adapter\ArrayAdapter', $container['orm.em.config']->getHydrationCache()); - $this->assertInstanceOf('Doctrine\Persistence\Mapping\Driver\MappingDriverChain', $container['orm.em.config']->getMetadataDriverImpl()); + $this->assertInstanceOf(\Symfony\Component\Cache\Adapter\ArrayAdapter::class, $container['orm.em.config']->getQueryCache()); + $this->assertInstanceOf(\Symfony\Component\Cache\Adapter\ArrayAdapter::class, $container['orm.em.config']->getResultCache()); + $this->assertInstanceOf(\Symfony\Component\Cache\Adapter\ArrayAdapter::class, $container['orm.em.config']->getMetadataCache()); + $this->assertInstanceOf(\Symfony\Component\Cache\Adapter\ArrayAdapter::class, $container['orm.em.config']->getHydrationCache()); + $this->assertInstanceOf(\Doctrine\Persistence\Mapping\Driver\MappingDriverChain::class, $container['orm.em.config']->getMetadataDriverImpl()); } /** @@ -139,7 +139,7 @@ public function testProxyConfigurationDefined() $container['orm.default_repository_class'] = $entityRepositoryClassName; $container['orm.entity_listener_resolver'] = $entityListenerResolver; $container['orm.repository_factory'] = $repositoryFactory; - $container['orm.custom.hydration_modes'] = array('mymode' => 'Doctrine\ORM\Internal\Hydration\SimpleObjectHydrator'); + $container['orm.custom.hydration_modes'] = array('mymode' => \Doctrine\ORM\Internal\Hydration\SimpleObjectHydrator::class); $this->assertEquals('/path/to/proxies', $container['orm.em.config']->getProxyDir()); $this->assertEquals('TestDoctrineOrmProxiesNamespace', $container['orm.em.config']->getProxyNamespace()); From 7443eb89a3824171f7134c2afa258158ae6dceb3 Mon Sep 17 00:00:00 2001 From: Greg ORIOL Date: Mon, 30 Jan 2023 15:24:14 +0100 Subject: [PATCH 13/15] Cleanup --- src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php | 2 +- .../Provider/DoctrineOrm/DoctrineOrmServiceProviderTest.php | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php b/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php index 5e8c164..22da769 100755 --- a/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php +++ b/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php @@ -169,7 +169,7 @@ public function register(Container $container) break; case 'annotation': $annotationsCache = null; - if ($entity['cache'] !== null) { + if (array_key_exists('cache', $entity) && $entity['cache'] !== null) { $annotationsCache = $entity['cache']; } $driver = ORMSetup::createDefaultAnnotationDriver((array) $entity['path'], $annotationsCache); diff --git a/tests/Dflydev/Tests/Provider/DoctrineOrm/DoctrineOrmServiceProviderTest.php b/tests/Dflydev/Tests/Provider/DoctrineOrm/DoctrineOrmServiceProviderTest.php index d06cc87..e9784b0 100644 --- a/tests/Dflydev/Tests/Provider/DoctrineOrm/DoctrineOrmServiceProviderTest.php +++ b/tests/Dflydev/Tests/Provider/DoctrineOrm/DoctrineOrmServiceProviderTest.php @@ -318,7 +318,6 @@ public function testMappingAlias() 'namespace' => $namespace, 'path' => __DIR__.'/src/Foo/Entities', 'alias' => $alias, - 'cache' => null, ) ), ); From d98d64b49826d06d9555b88faf8b8ced6350683e Mon Sep 17 00:00:00 2001 From: Greg ORIOL Date: Mon, 30 Jan 2023 17:07:44 +0100 Subject: [PATCH 14/15] Addedmissing cache options parameter --- .../Provider/DoctrineOrm/DoctrineOrmServiceProvider.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php b/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php index 22da769..4c92943 100755 --- a/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php +++ b/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php @@ -306,11 +306,11 @@ public function register(Container $container) return $cache; }); - $container['orm.cache.factory.array'] = $container->protect(function () { + $container['orm.cache.factory.array'] = $container->protect(function ($cacheOptions) { return new ArrayAdapter(); }); - $container['orm.cache.factory.apc'] = $container->protect(function () { + $container['orm.cache.factory.apc'] = $container->protect(function ($cacheOptions) { return new ApcuAdapter($cacheOptions['namespace']); }); From 1e4b1424ad1458c868be21f2e1a09f9fb492519b Mon Sep 17 00:00:00 2001 From: Greg ORIOL Date: Mon, 30 Jan 2023 17:26:01 +0100 Subject: [PATCH 15/15] Removed not available anymore memcache driver --- .../DoctrineOrm/DoctrineOrmServiceProvider.php | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php b/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php index 4c92943..5a46bbc 100755 --- a/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php +++ b/src/Dflydev/Provider/DoctrineOrm/DoctrineOrmServiceProvider.php @@ -244,24 +244,6 @@ public function register(Container $container) return $container[$cacheInstanceKey] = $cache; }); - $container['orm.cache.factory.backing_memcache'] = $container->protect(function () { - return new \Memcache; - }); - - $container['orm.cache.factory.memcache'] = $container->protect(function ($cacheOptions) use ($container) { - if (empty($cacheOptions['host']) || empty($cacheOptions['port'])) { - throw new \RuntimeException('Host and port options need to be specified for memcache cache'); - } - - /** @var \Memcache $memcache */ - $memcache = $container['orm.cache.factory.backing_memcache'](); - $memcache->connect($cacheOptions['host'], $cacheOptions['port']); - - $cache = new MemcachedAdapter($memcache, $cacheOptions['namespace']); - - return $cache; - }); - $container['orm.cache.factory.backing_memcached'] = $container->protect(function () { return new \Memcached; });