Skip to content

Commit 33c3f0c

Browse files
authored
Merge pull request #753 from snapshotpl/laminas-cache-v3
Support for Laminas Cache v3
2 parents bcbd123 + 47e72eb commit 33c3f0c

File tree

3 files changed

+52
-22
lines changed

3 files changed

+52
-22
lines changed

.github/workflows/continuous-integration.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,18 @@ jobs:
2424
laminas-form-version:
2525
- "3.0.0"
2626
- "2.17.0"
27+
laminas-cache-version:
28+
- "3.1.2"
29+
- "2.13.0"
2730
include:
2831
- php-version: "7.3"
2932
dependencies: "lowest"
3033
laminas-form-version: "2.17.0"
34+
laminas-cache-version: "2.13.0"
3135
- php-version: "7.3"
3236
dependencies: "lowest"
3337
laminas-form-version: "3.0.0"
38+
laminas-cache-version: "3.1.2"
3439

3540
steps:
3641
- name: "Checkout"
@@ -53,6 +58,9 @@ jobs:
5358
if: "startsWith(matrix.php-version, '8')"
5459
run: "composer require laminas/laminas-form ^${{ matrix.laminas-form-version }} --no-update --ignore-platform-req=php"
5560

61+
- name: "Require specific laminas-cache version"
62+
run: "composer require laminas/laminas-cache ^${{ matrix.laminas-cache-version }} --no-update"
63+
5664
- name: "Install dependencies with Composer"
5765
uses: "ramsey/composer-install@v1"
5866
if: "! startsWith(matrix.php-version, '8')"

composer.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
},
4444
"require": {
4545
"php": "^7.3 || ~8.0.0 || ~8.1.0",
46+
"container-interop/container-interop": "^1.2.0",
4647
"doctrine/annotations": "^1.13.2",
4748
"doctrine/cache": "^1.12.1",
4849
"doctrine/collections": "^1.6.8",
@@ -51,7 +52,7 @@
5152
"doctrine/inflector": "^2.0.3",
5253
"doctrine/persistence": "^2.2.2",
5354
"laminas/laminas-authentication": "^2.8.0",
54-
"laminas/laminas-cache": "^2.13.0",
55+
"laminas/laminas-cache": "^2.13.0 || ^3.1.2",
5556
"laminas/laminas-eventmanager": "^3.4.0",
5657
"laminas/laminas-form": "^2.17.0 || ^3.0.1",
5758
"laminas/laminas-modulemanager": "^2.11.0",
@@ -60,13 +61,14 @@
6061
"laminas/laminas-servicemanager": "^3.7.0",
6162
"laminas/laminas-stdlib": "^3.6.0",
6263
"laminas/laminas-validator": "^2.15.0",
63-
"container-interop/container-interop": "^1.2.0",
6464
"symfony/console": "^5.3.7"
6565
},
6666
"require-dev": {
6767
"doctrine/coding-standard": "^9.0.0",
6868
"doctrine/orm": "^2.10.2",
6969
"jangregor/phpstan-prophecy": "^1.0.0",
70+
"laminas/laminas-cache-storage-adapter-blackhole": "^1.2.1 || ^2.0.0",
71+
"laminas/laminas-cache-storage-adapter-memory": "^1.0.1 || ^2.0.0",
7072
"laminas/laminas-i18n": "^2.11.3",
7173
"laminas/laminas-log": "^2.13.1",
7274
"laminas/laminas-mvc-console": "^1.3.0",

tests/Service/CacheFactoryTest.php

Lines changed: 40 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,17 @@
66

77
use Doctrine\Common\Cache\ArrayCache;
88
use Doctrine\Common\Cache\ChainCache;
9+
use DoctrineModule\Cache\LaminasStorageCache;
910
use DoctrineModule\Service\CacheFactory;
11+
use Laminas\Cache\ConfigProvider;
12+
use Laminas\Cache\Storage\Adapter\BlackHole;
13+
use Laminas\Cache\Storage\AdapterPluginManager;
14+
use Laminas\ServiceManager\Factory\InvokableFactory;
1015
use Laminas\ServiceManager\ServiceManager;
1116
use PHPUnit\Framework\TestCase as BaseTestCase;
1217

1318
use function assert;
19+
use function class_exists;
1420

1521
/**
1622
* Test for {@see \DoctrineModule\Service\CacheFactory}
@@ -49,31 +55,45 @@ public function testWillSetNamespace(): void
4955
public function testCreateLaminasCache(): void
5056
{
5157
$factory = new CacheFactory('phpunit');
52-
$serviceManager = new ServiceManager();
53-
$serviceManager->setService(
54-
'config',
55-
[
56-
'doctrine' => [
57-
'cache' => [
58-
'phpunit' => [
59-
'class' => 'DoctrineModule\Cache\LaminasStorageCache',
60-
'instance' => 'my-laminas-cache',
61-
'namespace' => 'DoctrineModule',
62-
],
58+
$serviceManager = new ServiceManager((new ConfigProvider())->getDependencyConfig());
59+
$config = [
60+
'doctrine' => [
61+
'cache' => [
62+
'phpunit' => [
63+
'class' => 'DoctrineModule\Cache\LaminasStorageCache',
64+
'instance' => 'my-laminas-cache',
65+
'namespace' => 'DoctrineModule',
6366
],
6467
],
65-
'caches' => [
66-
'my-laminas-cache' => [
67-
'adapter' => ['name' => 'blackhole'],
68-
],
68+
],
69+
'caches' => [
70+
'my-laminas-cache' => ['adapter' => 'blackhole'],
71+
],
72+
];
73+
74+
if (class_exists(BlackHole\ConfigProvider::class)) {
75+
// setup for laminas-cache 3 with blackhole adapter 2
76+
$serviceManager->configure((new BlackHole\ConfigProvider())->getServiceDependencies());
77+
$serviceManager->setService('config', $config);
78+
} else {
79+
// setup for laminas-cache 2 and 3 with blackhole adapter 1
80+
$config['caches']['my-laminas-cache']['name'] = 'blackhole';
81+
$pluginManager = $serviceManager->get(AdapterPluginManager::class);
82+
assert($pluginManager instanceof AdapterPluginManager);
83+
$pluginManager->configure([
84+
'factories' => [
85+
BlackHole::class => InvokableFactory::class,
6986
],
70-
]
71-
);
72-
$serviceManager->addAbstractFactory('Laminas\Cache\Service\StorageCacheAbstractServiceFactory');
87+
'aliases' => [
88+
'blackhole' => BlackHole::class,
89+
],
90+
]);
91+
$serviceManager->setService('config', $config);
92+
}
7393

74-
$cache = $factory->createService($serviceManager);
94+
$cache = $factory->__invoke($serviceManager, LaminasStorageCache::class);
7595

76-
$this->assertInstanceOf('DoctrineModule\Cache\LaminasStorageCache', $cache);
96+
$this->assertInstanceOf(LaminasStorageCache::class, $cache);
7797
}
7898

7999
public function testCreatePredisCache(): void

0 commit comments

Comments
 (0)