Skip to content

Commit

Permalink
Merge pull request #2 from Micro-PHP/release-1.1
Browse files Browse the repository at this point in the history
Release 1.1
  • Loading branch information
Asisyas authored Nov 25, 2022
2 parents a10116e + 1a659ba commit 4727eae
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 13 deletions.
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "micro/kernel-boot-configuration",
"description": "Micro Framework: Kernel Boot loader - component to provide plugin configuration",
"type": "library",
"version": "1.0",
"version": "1.1",
"require": {
"micro/kernel": "^1"
},
Expand Down
20 changes: 16 additions & 4 deletions src/Boot/ConfigurationProviderBootLoader.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,13 @@
use Micro\Framework\Kernel\Configuration\ApplicationConfigurationFactoryInterface;
use Micro\Framework\Kernel\Configuration\ApplicationConfigurationInterface;
use Micro\Framework\Kernel\Configuration\DefaultApplicationConfigurationFactory;
use Micro\Framework\Kernel\Configuration\Plugin\ConfigurableInterface;
use Micro\Framework\Kernel\Configuration\Resolver\PluginConfigurationClassResolver;
use Micro\Framework\Kernel\Plugin\ConfigurableInterface;
use Micro\Framework\Kernel\Plugin\PluginBootLoaderInterface;

class ConfigurationProviderBootLoader implements PluginBootLoaderInterface
{
private readonly ApplicationConfigurationInterface $configuration;
private readonly ApplicationConfigurationInterface $applicationConfiguration;

/**
* @param array|ApplicationConfigurationInterface|ApplicationConfigurationFactoryInterface $config
Expand All @@ -29,7 +30,7 @@ public function __construct(
$applicationConfig = $applicationConfig->create();
}

$this->configuration = $applicationConfig;
$this->applicationConfiguration = $applicationConfig;
}

/**
Expand All @@ -41,6 +42,17 @@ public function boot(object $applicationPlugin): void
return;
}

$applicationPlugin->setConfiguration($this->configuration);
$applicationPlugin->setConfiguration(
$this->createPluginConfigurationClassResolver()
->resolve($applicationPlugin->name())
);
}

/**
* {@inheritDoc}
*/
protected function createPluginConfigurationClassResolver(): PluginConfigurationClassResolver
{
return new PluginConfigurationClassResolver($this->applicationConfiguration);
}
}
12 changes: 5 additions & 7 deletions src/Configuration/Resolver/PluginConfigurationClassResolver.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,27 +9,25 @@
class PluginConfigurationClassResolver
{
/**
* @param string $pluginClass
* @param ApplicationConfigurationInterface $applicationConfiguration
*/
public function __construct(
private readonly string $pluginClass,
private readonly ApplicationConfigurationInterface $applicationConfiguration
)
{
}

/**
* @param string $pluginClass
*
* @return PluginConfigurationInterface
*/
public function resolve(): PluginConfigurationInterface
public function resolve(string $pluginClass): PluginConfigurationInterface
{
$configClassDefault = PluginConfiguration::class;
$configClasses = [];

foreach ($this->getPluginClassResolvers() as $resolver) {
$configClass = $resolver->resolve($this->pluginClass);

$configClass = $resolver->resolve($pluginClass);
if(!class_exists($configClass)) {
continue;
}
Expand All @@ -41,7 +39,7 @@ public function resolve(): PluginConfigurationInterface
throw new \RuntimeException(
sprintf(
'Too many configuration classes for Application plugin "%s". [%s]',
$this->pluginClass,
$pluginClass,
implode(", ", $configClasses)
)
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
interface PluginConfigurationClassResolverInterface
{
/**
* @param string $pluginClass
* @param string $pluginClass
*
* @return string
*/
public function resolve(string $pluginClass): string;
Expand Down
5 changes: 5 additions & 0 deletions src/Plugin/ConfigurableInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,9 @@ public function configuration(): PluginConfigurationInterface;
* @return void
*/
public function setConfiguration(PluginConfigurationInterface $pluginConfiguration): void;

/**
* @return string
*/
public function name(): string;
}

0 comments on commit 4727eae

Please sign in to comment.