Skip to content

Commit 20c9161

Browse files
committed
add utilities for nette di
1 parent 671c152 commit 20c9161

File tree

4 files changed

+74
-3
lines changed

4 files changed

+74
-3
lines changed

src/DI/CompilerExtensionUtility.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22

33
namespace Utilitte\Nette\DI;
44

5+
use JetBrains\PhpStorm\Deprecated;
56
use Nette\DI\ContainerBuilder;
67
use Nette\DI\Definitions\Definition;
78
use Nette\DI\Definitions\FactoryDefinition;
89
use Nette\DI\Definitions\ServiceDefinition;
910

11+
#[Deprecated('Use NetteDIStrict instead of')]
1012
final class CompilerExtensionUtility
1113
{
1214

src/DI/UtilityExtension.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use Utilitte\Nette\Latte\Macros;
1717
use Utilitte\Nette\UI\FlexibleMultiplierByIdentifierFactory;
1818
use Utilitte\Nette\UI\FlexibleTransferObjectMultiplier;
19+
use Utilitte\Nette\Utility\NetteDIUtility;
1920

2021
final class UtilityExtension extends CompilerExtension
2122
{
@@ -69,9 +70,7 @@ public function beforeCompile(): void
6970
$config = $this->getConfig();
7071

7172
if ($config->latte->enable) {
72-
$service = CompilerExtensionUtility::getFactoryDefinitionByType($builder, ILatteFactory::class);
73-
74-
$service->getResultDefinition()
73+
NetteDIUtility::getLatteFactory($builder)->getResultDefinition()
7574
->addSetup('?->onCompile[] = function ($engine) { ?::install($engine->getCompiler(), ?); }', [
7675
'@self',
7776
Macros::class,

src/Strict/NetteDIStrict.php

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php declare(strict_types = 1);
2+
3+
namespace Utilitte\Nette\Strict;
4+
5+
use Nette\DI\CompilerExtension;
6+
use Nette\DI\ContainerBuilder;
7+
use Nette\DI\Definitions\AccessorDefinition;
8+
use Nette\DI\Definitions\FactoryDefinition;
9+
use Nette\DI\Definitions\ImportedDefinition;
10+
use Nette\DI\Definitions\LocatorDefinition;
11+
use Nette\DI\Definitions\ServiceDefinition;
12+
use Utilitte\Php\Strict\Strict;
13+
14+
final class NetteDIStrict
15+
{
16+
17+
public static function getServiceDefinitionByType(ContainerBuilder $builder, string $type): ServiceDefinition
18+
{
19+
return Strict::instanceOf($builder->getDefinitionByType($type), ServiceDefinition::class);
20+
}
21+
22+
public static function getFactoryDefinitionByType(ContainerBuilder $builder, string $type): FactoryDefinition
23+
{
24+
return Strict::instanceOf($builder->getDefinitionByType($type), FactoryDefinition::class);
25+
}
26+
27+
public static function getAccessorDefinitionByType(ContainerBuilder $builder, string $type): AccessorDefinition
28+
{
29+
return Strict::instanceOf($builder->getDefinitionByType($type), AccessorDefinition::class);
30+
}
31+
32+
public static function getImportedDefinitionByType(ContainerBuilder $builder, string $type): ImportedDefinition
33+
{
34+
return Strict::instanceOf($builder->getDefinitionByType($type), ImportedDefinition::class);
35+
}
36+
37+
public static function getLocatorDefinitionByType(ContainerBuilder $builder, string $type): LocatorDefinition
38+
{
39+
return Strict::instanceOf($builder->getDefinitionByType($type), LocatorDefinition::class);
40+
}
41+
42+
}

src/Utility/NetteDIUtility.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php declare(strict_types = 1);
2+
3+
namespace Utilitte\Nette\Utility;
4+
5+
use Nette\Bridges\ApplicationLatte\ILatteFactory;
6+
use Nette\DI\ContainerBuilder;
7+
use Nette\DI\Definitions\FactoryDefinition;
8+
use Utilitte\Nette\Strict\NetteDIStrict;
9+
10+
final class NetteDIUtility
11+
{
12+
13+
public static function getLatteFactory(ContainerBuilder $builder): FactoryDefinition
14+
{
15+
return NetteDIStrict::getFactoryDefinitionByType($builder, ILatteFactory::class);
16+
}
17+
18+
public static function registerMacro(ContainerBuilder $builder, string $class): void
19+
{
20+
self::getLatteFactory($builder)
21+
->getResultDefinition()
22+
->addSetup('?->onCompile[] = function (Latte\Engine $engine): void { ?::install($engine->getCompiler()); }', [
23+
'@self',
24+
$class,
25+
]);
26+
}
27+
28+
}

0 commit comments

Comments
 (0)