Skip to content

Commit 8d1236e

Browse files
authored
Merge pull request #6 from peckadesign/pdp-3114-nette3
#3114 Dopredne upravy pro nette3
2 parents ead6e5e + d8611b5 commit 8d1236e

File tree

4 files changed

+64
-12
lines changed

4 files changed

+64
-12
lines changed

composer.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@
2424
],
2525
"require": {
2626
"php": "~7.1",
27-
"nette/application": "~2.4.14",
28-
"nette/di": "~2.4.14",
29-
"kdyby/console": "~2.7.1",
27+
"nette/application": "~2.4.14|~3.0.0",
28+
"nette/di": "~2.4.14|~3.0.0",
29+
"kdyby/console": "~2.7.1|dev-master",
3030
"supervisorphp/configuration": "~0.2.1"
3131
},
3232
"require-dev": {
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php declare(strict_types = 1);
2+
3+
namespace Pd\Supervisor\Adapter\Nette\DI;
4+
5+
class CompilerExtensionAdapter
6+
{
7+
8+
/**
9+
* Nahrazuje volani metody $this->getConfig() s parametrem, ktery obsahuje vychozi hodnoty.
10+
* Zde je pouzita predchozi funkcionalita, nez byla z getConfig() odebrana.
11+
* V Nette3 se pro validaci configu pouziva Schema. To by jsme pak meli pouzit namisto teto funkce.
12+
*
13+
* @param array<mixed> $defaults
14+
* @return array<mixed>|string
15+
*/
16+
public static function mergeConfigWithDefaults(\Nette\DI\CompilerExtension $extension, array $defaults)
17+
{
18+
$defaultConfig = \Nette\DI\Helpers::expand($defaults, $extension->getContainerBuilder()->parameters);
19+
20+
return \Nette\DI\Config\Helpers::merge($extension->getConfig(), $defaultConfig);
21+
}
22+
23+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php declare(strict_types = 1);
2+
3+
namespace Pd\Supervisor\Adapter\Nette\DI;
4+
5+
class DiStatementFactory
6+
{
7+
public static function createDiStatement($entity, array $arguments = [])
8+
{
9+
if (\class_exists(\Nette\DI\Definitions\Statement::class)) {
10+
return self::createDiStatementNette30($entity, $arguments);
11+
} else {
12+
return self::createDiStatementNette24($entity, $arguments);
13+
}
14+
}
15+
16+
17+
private static function createDiStatementNette24($entity, array $arguments = [])
18+
{
19+
return new \Nette\DI\Statement($entity, $arguments);
20+
}
21+
22+
23+
private static function createDiStatementNette30($entity, array $arguments = [])
24+
{
25+
return new \Nette\DI\Definitions\Statement($entity, $arguments);
26+
}
27+
}

src/DI/SupervisorExtension.php

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
use Kdyby\Console\DI\ConsoleExtension;
66
use Nette\DI\CompilerExtension;
77
use Nette\DI\Helpers;
8-
use Nette\DI\Statement;
98
use Pd\Supervisor\Console\RenderCommand;
109
use Pd\Supervisor\Console\WriteCommand;
1110
use Supervisor\Configuration\Configuration;
@@ -28,7 +27,7 @@ public function loadConfiguration()
2827
{
2928
$builder = $this->getContainerBuilder();
3029

31-
$config = $this->getConfig(self::DEFAULTS);
30+
$config = \Pd\Supervisor\Adapter\Nette\DI\CompilerExtensionAdapter::mergeConfigWithDefaults($this, self::DEFAULTS);
3231

3332
if ( ! isset($config['prefix'])) {
3433
throw new \Pd\Supervisor\DI\MissingConfigurationValueException(
@@ -50,11 +49,11 @@ public function loadConfiguration()
5049
);
5150

5251
$builder->addDefinition($this->prefix('renderCommand'))
53-
->setClass(RenderCommand::class, [strtr($this->prefix('render'), '.', ':')])
52+
->setFactory(RenderCommand::class, [strtr($this->prefix('render'), '.', ':')])
5453
->addTag(ConsoleExtension::TAG_COMMAND)
5554
;
5655
$builder->addDefinition($this->prefix('writeCommand'))
57-
->setClass(WriteCommand::class, [strtr($this->prefix('write'), '.', ':')])
56+
->setFactory(WriteCommand::class, [strtr($this->prefix('write'), '.', ':')])
5857
->addTag(ConsoleExtension::TAG_COMMAND)
5958
;
6059
}
@@ -65,7 +64,7 @@ private function loadSupervisorConfiguration(array $config, array $defaults = []
6564
$builder = $this->getContainerBuilder();
6665

6766
$configuration = $builder->addDefinition($this->prefix('configuration'))
68-
->setClass(Configuration::class)
67+
->setType(Configuration::class)
6968
;
7069

7170
foreach ($config as $sectionName => $sectionConfig) {
@@ -76,15 +75,15 @@ private function loadSupervisorConfiguration(array $config, array $defaults = []
7675
foreach ((array) $sectionConfig as $name => $properties) {
7776
$name = $this->prepareName($name, $prefix);
7877
$configuration->addSetup('addSection', [
79-
new Statement($sectionClass, [
78+
\Pd\Supervisor\Adapter\Nette\DI\DiStatementFactory::createDiStatement($sectionClass, [
8079
$name,
8180
isset($defaults[$sectionName]) ? $this->mergeProperties($properties, $defaults[$sectionName]) : $properties,
8281
]),
8382
]);
8483
}
8584
} else {
8685
$configuration->addSetup('addSection', [
87-
new Statement(
86+
\Pd\Supervisor\Adapter\Nette\DI\DiStatementFactory::createDiStatement(
8887
$sectionClass, [
8988
isset($defaults[$sectionName]) ? $this->mergeProperties($sectionConfig, $defaults[$sectionName]) : $sectionConfig,
9089
]),
@@ -121,7 +120,10 @@ private function prepareName(string $name, string $prefix): string
121120
}
122121

123122

124-
private function prepareGroup(array $config, \Nette\DI\ServiceDefinition $configuration, string $prefix, string $group = NULL): void
123+
/**
124+
* @param \Nette\DI\ServiceDefinition|\Nette\DI\Definitions\ServiceDefinition $configuration
125+
*/
126+
private function prepareGroup(array $config, $configuration, string $prefix, string $group = NULL): void
125127
{
126128
if ( ! $group) {
127129
return;
@@ -133,7 +135,7 @@ private function prepareGroup(array $config, \Nette\DI\ServiceDefinition $config
133135

134136
$sectionClass = (new Configuration)->findSection('group');
135137
$configuration->addSetup('addSection', [
136-
new Statement(
138+
\Pd\Supervisor\Adapter\Nette\DI\DiStatementFactory::createDiStatement(
137139
$sectionClass,
138140
[
139141
$group,

0 commit comments

Comments
 (0)