Skip to content
This repository was archived by the owner on Feb 6, 2020. It is now read-only.

Commit 1e51f3d

Browse files
committed
Refactor to non-static class
1 parent aaec79c commit 1e51f3d

File tree

3 files changed

+47
-35
lines changed

3 files changed

+47
-35
lines changed

bin/dump-config.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,10 @@
3535
exit(1);
3636
}
3737

38+
$dumper = new Tool\ConfigDumper();
39+
3840
try {
39-
$config = Tool\ConfigDumper::createDependencyConfig($appConfig, $className);
41+
$config = $dumper->createDependencyConfig($appConfig, $className);
4042
} catch (Exception\InvalidArgumentException $e) {
4143
fwrite(STDERR, sprintf(
4244
'Unable to create config for "%s": %s%s',
@@ -46,5 +48,5 @@
4648
));
4749
exit(1);
4850
}
49-
echo Tool\ConfigDumper::dumpConfigFile($config);
51+
echo $dumper->dumpConfigFile($config);
5052
exit(0);

src/Tool/ConfigDumper.php

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class ConfigDumper
2020
const CONFIG_TEMPLATE = <<<EOC
2121
<?php
2222
/**
23-
* This file generated by Zend\ServiceManager\Tool\ConfigDumper.
23+
* This file generated by %s.
2424
* Generated %s
2525
*/
2626
@@ -33,9 +33,9 @@ class ConfigDumper
3333
* @return array
3434
* @throws InvalidArgumentException for invalid $className
3535
*/
36-
public static function createDependencyConfig(array $config, $className)
36+
public function createDependencyConfig(array $config, $className)
3737
{
38-
self::validateClassName($className);
38+
$this->validateClassName($className);
3939

4040
$reflectionClass = new ReflectionClass($className);
4141
if (! $reflectionClass->getConstructor()) {
@@ -64,7 +64,7 @@ function (ReflectionParameter $argument) {
6464
);
6565
}
6666
$argumentName = $argumentType->getName();
67-
$config = self::createDependencyConfig($config, $argumentName);
67+
$config = $this->createDependencyConfig($config, $argumentName);
6868
$config[ConfigAbstractFactory::class][$className][] = $argumentName;
6969
}
7070

@@ -77,7 +77,7 @@ function (ReflectionParameter $argument) {
7777
* @throws InvalidArgumentException if ConfigAbstractFactory configuration
7878
* value is not an array.
7979
*/
80-
public static function createFactoryMappingsFromConfig(array $config)
80+
public function createFactoryMappingsFromConfig(array $config)
8181
{
8282
if (! array_key_exists(ConfigAbstractFactory::class, $config)) {
8383
return $config;
@@ -92,7 +92,7 @@ public static function createFactoryMappingsFromConfig(array $config)
9292
}
9393

9494
foreach ($config[ConfigAbstractFactory::class] as $className => $dependency) {
95-
$config = self::createFactoryMappings($config, $className);
95+
$config = $this->createFactoryMappings($config, $className);
9696
}
9797
return $config;
9898
}
@@ -102,9 +102,9 @@ public static function createFactoryMappingsFromConfig(array $config)
102102
* @param string $className
103103
* @return array
104104
*/
105-
public static function createFactoryMappings(array $config, $className)
105+
public function createFactoryMappings(array $config, $className)
106106
{
107-
self::validateClassName($className);
107+
$this->validateClassName($className);
108108

109109
if (array_key_exists('service_manager', $config)
110110
&& array_key_exists('factories', $config['service_manager'])
@@ -121,18 +121,23 @@ public static function createFactoryMappings(array $config, $className)
121121
* @param array $config
122122
* @return string
123123
*/
124-
public static function dumpConfigFile(array $config)
124+
public function dumpConfigFile(array $config)
125125
{
126-
$prepared = self::prepareConfig($config);
127-
return sprintf(self::CONFIG_TEMPLATE, date('Y-m-d H:i:s'), $prepared);
126+
$prepared = $this->prepareConfig($config);
127+
return sprintf(
128+
self::CONFIG_TEMPLATE,
129+
get_class($this),
130+
date('Y-m-d H:i:s'),
131+
$prepared
132+
);
128133
}
129134

130135
/**
131136
* @param $className
132137
* @throws InvalidArgumentException if class name is not a string or does
133138
* not exist.
134139
*/
135-
private static function validateClassName($className)
140+
private function validateClassName($className)
136141
{
137142
if (! is_string($className)) {
138143
throw new InvalidArgumentException('Class name must be a string, ' . gettype($className) . ' given');
@@ -148,17 +153,17 @@ private static function validateClassName($className)
148153
* @param int $indentLevel
149154
* @return string
150155
*/
151-
private static function prepareConfig($config, $indentLevel = 1)
156+
private function prepareConfig($config, $indentLevel = 1)
152157
{
153158
$indent = str_repeat(' ', $indentLevel * 4);
154159
$entries = [];
155160
foreach ($config as $key => $value) {
156-
$key = self::createConfigKey($key);
161+
$key = $this->createConfigKey($key);
157162
$entries[] = sprintf(
158163
'%s%s%s,',
159164
$indent,
160165
$key ? sprintf('%s => ', $key) : '',
161-
self::createConfigValue($value, $indentLevel)
166+
$this->createConfigValue($value, $indentLevel)
162167
);
163168
}
164169

@@ -175,7 +180,7 @@ private static function prepareConfig($config, $indentLevel = 1)
175180
* @param string|int|null $key
176181
* @return null|string
177182
*/
178-
private static function createConfigKey($key)
183+
private function createConfigKey($key)
179184
{
180185
if (is_string($key) && class_exists($key)) {
181186
return sprintf('\\%s::class', $key);
@@ -193,10 +198,10 @@ private static function createConfigKey($key)
193198
* @param int $indentLevel
194199
* @return string
195200
*/
196-
private static function createConfigValue($value, $indentLevel)
201+
private function createConfigValue($value, $indentLevel)
197202
{
198203
if (is_array($value) || $value instanceof Traversable) {
199-
return self::prepareConfig($value, $indentLevel + 1);
204+
return $this->prepareConfig($value, $indentLevel + 1);
200205
}
201206

202207
if (is_string($value) && class_exists($value)) {

test/Tool/ConfigDumperTest.php

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -22,24 +22,29 @@
2222

2323
class ConfigDumperTest extends TestCase
2424
{
25+
public function setUp()
26+
{
27+
$this->dumper = new ConfigDumper();
28+
}
29+
2530
public function testCreateDependencyConfigExceptsIfClassNameIsNotString()
2631
{
2732
self::expectException(InvalidArgumentException::class);
2833
self::expectExceptionMessage('Class name must be a string, integer given');
29-
ConfigDumper::createDependencyConfig([], 42);
34+
$this->dumper->createDependencyConfig([], 42);
3035
}
3136

3237
public function testCreateDependencyConfigExceptsIfClassDoesNotExist()
3338
{
3439
$className = 'Dirk\Gentley\Holistic\Detective\Agency';
3540
self::expectException(InvalidArgumentException::class);
3641
self::expectExceptionMessage('Cannot find class with name ' . $className);
37-
ConfigDumper::createDependencyConfig([], $className);
42+
$this->dumper->createDependencyConfig([], $className);
3843
}
3944

4045
public function testCreateDependencyConfigInvokableObjectReturnsEmptyArray()
4146
{
42-
$config = ConfigDumper::createDependencyConfig([], InvokableObject::class);
47+
$config = $this->dumper->createDependencyConfig([], InvokableObject::class);
4348
self::assertEquals(
4449
[
4550
ConfigAbstractFactory::class => [
@@ -52,7 +57,7 @@ public function testCreateDependencyConfigInvokableObjectReturnsEmptyArray()
5257

5358
public function testCreateDependencyConfigSimpleDependencyReturnsCorrectly()
5459
{
55-
$config = ConfigDumper::createDependencyConfig([], SimpleDependencyObject::class);
60+
$config = $this->dumper->createDependencyConfig([], SimpleDependencyObject::class);
5661
self::assertEquals(
5762
[
5863
ConfigAbstractFactory::class => [
@@ -69,7 +74,7 @@ public function testCreateDependencyConfigSimpleDependencyReturnsCorrectly()
6974

7075
public function testCreateDependencyConfigClassWithoutConstructorChangesNothing()
7176
{
72-
$config = ConfigDumper::createDependencyConfig([ConfigAbstractFactory::class => []], FailingFactory::class);
77+
$config = $this->dumper->createDependencyConfig([ConfigAbstractFactory::class => []], FailingFactory::class);
7378
self::assertEquals([ConfigAbstractFactory::class => []], $config);
7479
}
7580

@@ -79,7 +84,7 @@ public function testCreateDependencyConfigWithoutTypeHintedParameterExcepts()
7984
self::expectExceptionMessage(
8085
'Cannot create config for ' . ObjectWithScalarDependency::class . ', it has no type hints in constructor'
8186
);
82-
$config = ConfigDumper::createDependencyConfig(
87+
$config = $this->dumper->createDependencyConfig(
8388
[ConfigAbstractFactory::class => []],
8489
ObjectWithScalarDependency::class
8590
);
@@ -89,15 +94,15 @@ public function testCreateFactoryMappingsExceptsIfClassNameIsNotString()
8994
{
9095
self::expectException(InvalidArgumentException::class);
9196
self::expectExceptionMessage('Class name must be a string, integer given');
92-
ConfigDumper::createFactoryMappings([], 42);
97+
$this->dumper->createFactoryMappings([], 42);
9398
}
9499

95100
public function testCreateFactoryMappingsExceptsIfClassDoesNotExist()
96101
{
97102
$className = 'Dirk\Gentley\Holistic\Detective\Agency';
98103
self::expectException(InvalidArgumentException::class);
99104
self::expectExceptionMessage('Cannot find class with name ' . $className);
100-
ConfigDumper::createFactoryMappings([], $className);
105+
$this->dumper->createFactoryMappings([], $className);
101106
}
102107

103108
public function testCreateFactoryMappingsReturnsUnmodifiedArrayIfMappingExists()
@@ -109,7 +114,7 @@ public function testCreateFactoryMappingsReturnsUnmodifiedArrayIfMappingExists()
109114
],
110115
],
111116
];
112-
self::assertEquals($config, ConfigDumper::createFactoryMappings($config, InvokableObject::class));
117+
self::assertEquals($config, $this->dumper->createFactoryMappings($config, InvokableObject::class));
113118
}
114119

115120
public function testCreateFactoryMappingsAddsClassIfNotExists()
@@ -121,7 +126,7 @@ public function testCreateFactoryMappingsAddsClassIfNotExists()
121126
],
122127
],
123128
];
124-
self::assertEquals($expectedConfig, ConfigDumper::createFactoryMappings([], InvokableObject::class));
129+
self::assertEquals($expectedConfig, $this->dumper->createFactoryMappings([], InvokableObject::class));
125130
}
126131

127132
public function testCreateFactoryMappingsIgnoresExistingsMappings()
@@ -133,12 +138,12 @@ public function testCreateFactoryMappingsIgnoresExistingsMappings()
133138
],
134139
],
135140
];
136-
self::assertEquals($config, ConfigDumper::createFactoryMappings($config, InvokableObject::class));
141+
self::assertEquals($config, $this->dumper->createFactoryMappings($config, InvokableObject::class));
137142
}
138143

139144
public function testCreateFactoryMappingsFromConfigReturnsIfNoConfigKey()
140145
{
141-
self::assertEquals([], ConfigDumper::createFactoryMappingsFromConfig([]));
146+
self::assertEquals([], $this->dumper->createFactoryMappingsFromConfig([]));
142147
}
143148

144149
public function testCreateFactoryMappingsFromConfigExceptsWhenConfigNotArray()
@@ -148,7 +153,7 @@ public function testCreateFactoryMappingsFromConfigExceptsWhenConfigNotArray()
148153
'Config key for ' . ConfigAbstractFactory::class . ' should be an array, boolean given'
149154
);
150155

151-
ConfigDumper::createFactoryMappingsFromConfig(
156+
$this->dumper->createFactoryMappingsFromConfig(
152157
[
153158
ConfigAbstractFactory::class => true,
154159
]
@@ -188,15 +193,15 @@ public function testCreateFactoryMappingsFromConfigWithWorkingConfig()
188193
],
189194
];
190195

191-
self::assertEquals($expectedConfig, ConfigDumper::createFactoryMappingsFromConfig($config));
196+
self::assertEquals($expectedConfig, $this->dumper->createFactoryMappingsFromConfig($config));
192197
}
193198

194199
/**
195200
* @depends testCreateDependencyConfigSimpleDependencyReturnsCorrectly
196201
*/
197202
public function testDumpConfigFileReturnsContentsForConfigFileUsingUsingClassNotationAndShortArrays(array $config)
198203
{
199-
$formatted = ConfigDumper::dumpConfigFile($config);
204+
$formatted = $this->dumper->dumpConfigFile($config);
200205
$this->assertContains(
201206
'<' . "?php\n/**\n * This file generated by Zend\ServiceManager\Tool\ConfigDumper.\n",
202207
$formatted

0 commit comments

Comments
 (0)