-
-
Notifications
You must be signed in to change notification settings - Fork 52
/
StorageAdapterFactoryInterface.php
46 lines (40 loc) · 1.73 KB
/
StorageAdapterFactoryInterface.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
declare(strict_types=1);
namespace Laminas\Cache\Service;
use Laminas\Cache\Exception\InvalidArgumentException;
use Laminas\Cache\Storage\StorageInterface;
/**
* @psalm-type InternalOptionalPriorityConfigurationType = array{priority?:int}
* NOTE: have to re-declare this here until https://github.com/vimeo/psalm/issues/5148 is fixed.
* @psalm-type InternalPluginArrayConfigurationType = array{name:non-empty-string,options?:array<string,mixed>}
* @psalm-type PluginArrayConfigurationWithPriorityType =
* InternalPluginArrayConfigurationType&InternalOptionalPriorityConfigurationType
* @psalm-type StorageAdapterArrayConfigurationType = array{
* name:non-empty-string,
* options?:array<string,mixed>,
* plugins?: list<PluginArrayConfigurationWithPriorityType>
* }|array{
* adapter:non-empty-string,
* options?:array<string,mixed>,
* plugins?: list<PluginArrayConfigurationWithPriorityType>
* }
*/
interface StorageAdapterFactoryInterface
{
/**
* @psalm-param StorageAdapterArrayConfigurationType $configuration
*/
public function createFromArrayConfiguration(array $configuration): StorageInterface;
/**
* @psalm-param non-empty-string $storage
* @param array<string,mixed> $options
* @psalm-param list<PluginArrayConfigurationWithPriorityType> $plugins
*/
public function create(string $storage, array $options = [], array $plugins = []): StorageInterface;
/**
* @param array<mixed> $configuration
* @psalm-assert StorageAdapterArrayConfigurationType $configuration
* @throws InvalidArgumentException If the provided configuration is invalid.
*/
public function assertValidConfigurationStructure(array $configuration): void;
}