Skip to content

Commit

Permalink
Update Nette to 3.0
Browse files Browse the repository at this point in the history
  • Loading branch information
fmasa committed Feb 23, 2020
1 parent df445de commit adbb4b4
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 25 deletions.
4 changes: 2 additions & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
"type": "library",
"require": {
"php": "^7.1",
"nette/di": "^2.3",
"nette/di": "^3.0",
"nette/robot-loader": "^2.4.2 || ^3.0"
},
"require-dev": {
"phpunit/phpunit": "^5.7",
"nette/bootstrap": "^2.4",
"nette/bootstrap": "^3.0",
"satooshi/php-coveralls": "^1.0",
"phpunit/phpcov": "^3.0"
},
Expand Down
42 changes: 19 additions & 23 deletions src/AutoDI/DI/AutoDIExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,23 @@
namespace Fmasa\AutoDI\DI;

use Fmasa\AutoDI\ClassList;
use Nette\DI\Compiler;
use Nette;
use Nette\DI\CompilerExtension;
use Nette\Loaders\RobotLoader;
use Nette\Schema\Expect;

class AutoDIExtension extends CompilerExtension
{

private $defaults = [
'registerOnConfiguration' => FALSE,
'directories' => [
'%appDir%',
],
'defaults' => [],
'tempDir' => '%tempDir%',
];
public function getConfigSchema() : Nette\Schema\Schema
{
return Expect::structure([
'services' => Expect::listOf(Expect::array()),
'registerOnConfiguration' => Expect::bool(false),
'directories' => Expect::listOf(Expect::string())->default([$this->getContainerBuilder()->parameters['appDir']]),
'defaults' => Expect::array(),
'tempDir' => Expect::string($this->getContainerBuilder()->parameters['tempDir']),
]);
}

public function beforeCompile(): void
{
Expand All @@ -37,20 +39,20 @@ public function loadConfiguration(): void

private function shouldRegisterOnConfiguration(): bool
{
return (bool) $this->getConfig($this->defaults)['registerOnConfiguration'];
return (bool) $this->getConfig()->registerOnConfiguration;
}

private function registerServices(): void
{
$config = $this->getConfig($this->defaults);
$config = $this->getConfig();

$robotLoader = new RobotLoader();

foreach ($config['directories'] as $directory) {
foreach ($config->directories as $directory) {
$robotLoader->addDirectory($directory);
}

$robotLoader->setTempDirectory($config['tempDir']);
$robotLoader->setTempDirectory($config->tempDir);
$robotLoader->rebuild();

$classes = new ClassList(
Expand All @@ -59,8 +61,7 @@ private function registerServices(): void

$builder = $this->getContainerBuilder();

foreach ($config['services'] as $service) {

foreach ($config->services as $service) {
[$field, $matchingClasses] = $this->getClasses($service, $classes);

if (isset($service['exclude'])) {
Expand All @@ -73,23 +74,18 @@ private function registerServices(): void
return count($builder->findByType($class)) === 0;
});

$service += $config['defaults'];
$service += $config->defaults;

$services = array_map(function ($class) use ($service, $field) {
$service[$field] = $class;
return $service;
}, $matchingClasses);

Compiler::loadDefinitions(
$builder,
$services
);
$this->compiler->loadDefinitionsFromConfig($services);
}
}

/**
* @param array $service
* @param ClassList $classes
* @return array [definition field, Class list]
*/
private function getClasses(array $service, ClassList $classes): array
Expand Down

0 comments on commit adbb4b4

Please sign in to comment.