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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?php
namespace Laminas\Config;
use Interop\Container\ContainerInterface;
use Laminas\ServiceManager\AbstractPluginManager;
use Laminas\ServiceManager\Exception\InvalidServiceException;
use Laminas\ServiceManager\Factory\InvokableFactory;
use function array_merge_recursive;
use function get_class;
use function gettype;
use function is_object;
use function sprintf;
class WriterPluginManager extends AbstractPluginManager
{
protected $instanceOf = Writer\AbstractWriter::class;
protected $aliases = [
'ini' => Writer\Ini::class,
'Ini' => Writer\Ini::class,
'json' => Writer\Json::class,
'Json' => Writer\Json::class,
'php' => Writer\PhpArray::class,
'phparray' => Writer\PhpArray::class,
'phpArray' => Writer\PhpArray::class,
'PhpArray' => Writer\PhpArray::class,
'yaml' => Writer\Yaml::class,
'Yaml' => Writer\Yaml::class,
'xml' => Writer\Xml::class,
'Xml' => Writer\Xml::class,
'javaproperties' => Writer\JavaProperties::class,
'javaProperties' => Writer\JavaProperties::class,
'JavaProperties' => Writer\JavaProperties::class,
// Legacy Zend Framework aliases
\Zend\Config\Writer\Ini::class => Writer\Ini::class,
\Zend\Config\Writer\JavaProperties::class => Writer\JavaProperties::class,
\Zend\Config\Writer\Json::class => Writer\Json::class,
\Zend\Config\Writer\PhpArray::class => Writer\PhpArray::class,
\Zend\Config\Writer\Yaml::class => Writer\Yaml::class,
\Zend\Config\Writer\Xml::class => Writer\Xml::class,
// v2 normalized FQCNs
'zendconfigwriterini' => Writer\Ini::class,
'zendconfigwriterjavaproperties' => Writer\JavaProperties::class,
'zendconfigwriterjson' => Writer\Json::class,
'zendconfigwriterphparray' => Writer\PhpArray::class,
'zendconfigwriteryaml' => Writer\Yaml::class,
'zendconfigwriterxml' => Writer\Xml::class,
];
protected $factories = [
Writer\Ini::class => InvokableFactory::class,
Writer\JavaProperties::class => InvokableFactory::class,
Writer\Json::class => InvokableFactory::class,
Writer\PhpArray::class => InvokableFactory::class,
Writer\Yaml::class => InvokableFactory::class,
Writer\Xml::class => InvokableFactory::class,
// Legacy (v2) due to alias resolution; canonical form of resolved
// alias is used to look up the factory, while the non-normalized
// resolved alias is used as the requested name passed to the factory.
'laminasconfigwriterini' => InvokableFactory::class,
'laminasconfigwriterjavaproperties' => InvokableFactory::class,
'laminasconfigwriterjson' => InvokableFactory::class,
'laminasconfigwriterphparray' => InvokableFactory::class,
'laminasconfigwriteryaml' => InvokableFactory::class,
'laminasconfigwriterxml' => InvokableFactory::class,
];
/**
* Validate the plugin is of the expected type (v3).
*
* Validates against `$instanceOf`.
*
* @param mixed $instance
* @throws InvalidServiceException
*/
public function validate($instance)
{
if (! $instance instanceof $this->instanceOf) {
throw new InvalidServiceException(sprintf(
'%s can only create instances of %s; %s is invalid',
get_class($this),
$this->instanceOf,
(is_object($instance) ? get_class($instance) : gettype($instance))
));
}
}
/**
* Validate the plugin is of the expected type (v2).
*
* Proxies to `validate()`.
*
* @param mixed $instance
* @throws Exception\InvalidArgumentException
*/
public function validatePlugin($instance)
{
try {
$this->validate($instance);
} catch (InvalidServiceException $e) {
throw new Exception\InvalidArgumentException($e->getMessage(), $e->getCode(), $e);
}
}
public function __construct(ContainerInterface $container, array $config = [])
{
$config = array_merge_recursive(['aliases' => $this->aliases], $config);
parent::__construct($container, $config);
}
}