Skip to content

Commit 4727eae

Browse files
authored
Merge pull request #2 from Micro-PHP/release-1.1
Release 1.1
2 parents a10116e + 1a659ba commit 4727eae

File tree

5 files changed

+29
-13
lines changed

5 files changed

+29
-13
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "micro/kernel-boot-configuration",
33
"description": "Micro Framework: Kernel Boot loader - component to provide plugin configuration",
44
"type": "library",
5-
"version": "1.0",
5+
"version": "1.1",
66
"require": {
77
"micro/kernel": "^1"
88
},

src/Boot/ConfigurationProviderBootLoader.php

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@
55
use Micro\Framework\Kernel\Configuration\ApplicationConfigurationFactoryInterface;
66
use Micro\Framework\Kernel\Configuration\ApplicationConfigurationInterface;
77
use Micro\Framework\Kernel\Configuration\DefaultApplicationConfigurationFactory;
8-
use Micro\Framework\Kernel\Configuration\Plugin\ConfigurableInterface;
8+
use Micro\Framework\Kernel\Configuration\Resolver\PluginConfigurationClassResolver;
9+
use Micro\Framework\Kernel\Plugin\ConfigurableInterface;
910
use Micro\Framework\Kernel\Plugin\PluginBootLoaderInterface;
1011

1112
class ConfigurationProviderBootLoader implements PluginBootLoaderInterface
1213
{
13-
private readonly ApplicationConfigurationInterface $configuration;
14+
private readonly ApplicationConfigurationInterface $applicationConfiguration;
1415

1516
/**
1617
* @param array|ApplicationConfigurationInterface|ApplicationConfigurationFactoryInterface $config
@@ -29,7 +30,7 @@ public function __construct(
2930
$applicationConfig = $applicationConfig->create();
3031
}
3132

32-
$this->configuration = $applicationConfig;
33+
$this->applicationConfiguration = $applicationConfig;
3334
}
3435

3536
/**
@@ -41,6 +42,17 @@ public function boot(object $applicationPlugin): void
4142
return;
4243
}
4344

44-
$applicationPlugin->setConfiguration($this->configuration);
45+
$applicationPlugin->setConfiguration(
46+
$this->createPluginConfigurationClassResolver()
47+
->resolve($applicationPlugin->name())
48+
);
49+
}
50+
51+
/**
52+
* {@inheritDoc}
53+
*/
54+
protected function createPluginConfigurationClassResolver(): PluginConfigurationClassResolver
55+
{
56+
return new PluginConfigurationClassResolver($this->applicationConfiguration);
4557
}
4658
}

src/Configuration/Resolver/PluginConfigurationClassResolver.php

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,27 +9,25 @@
99
class PluginConfigurationClassResolver
1010
{
1111
/**
12-
* @param string $pluginClass
1312
* @param ApplicationConfigurationInterface $applicationConfiguration
1413
*/
1514
public function __construct(
16-
private readonly string $pluginClass,
1715
private readonly ApplicationConfigurationInterface $applicationConfiguration
1816
)
1917
{
2018
}
2119

2220
/**
21+
* @param string $pluginClass
22+
*
2323
* @return PluginConfigurationInterface
2424
*/
25-
public function resolve(): PluginConfigurationInterface
25+
public function resolve(string $pluginClass): PluginConfigurationInterface
2626
{
2727
$configClassDefault = PluginConfiguration::class;
2828
$configClasses = [];
29-
3029
foreach ($this->getPluginClassResolvers() as $resolver) {
31-
$configClass = $resolver->resolve($this->pluginClass);
32-
30+
$configClass = $resolver->resolve($pluginClass);
3331
if(!class_exists($configClass)) {
3432
continue;
3533
}
@@ -41,7 +39,7 @@ public function resolve(): PluginConfigurationInterface
4139
throw new \RuntimeException(
4240
sprintf(
4341
'Too many configuration classes for Application plugin "%s". [%s]',
44-
$this->pluginClass,
42+
$pluginClass,
4543
implode(", ", $configClasses)
4644
)
4745
);

src/Configuration/Resolver/PluginConfigurationClassResolverInterface.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
interface PluginConfigurationClassResolverInterface
66
{
77
/**
8-
* @param string $pluginClass
8+
* @param string $pluginClass
9+
*
910
* @return string
1011
*/
1112
public function resolve(string $pluginClass): string;

src/Plugin/ConfigurableInterface.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,9 @@ public function configuration(): PluginConfigurationInterface;
1717
* @return void
1818
*/
1919
public function setConfiguration(PluginConfigurationInterface $pluginConfiguration): void;
20+
21+
/**
22+
* @return string
23+
*/
24+
public function name(): string;
2025
}

0 commit comments

Comments
 (0)