diff --git a/README.md b/README.md index 7d259c1..b70f01c 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ $kernel = $kernelBuilder ->setApplicationPlugins([ TestPlugin::class ]) - ->setBootLoaders([ + ->addBootLoaders([ new DependencyProviderLoader($container) ]) ->build(); diff --git a/composer.json b/composer.json index 8250834..0609e27 100755 --- a/composer.json +++ b/composer.json @@ -2,7 +2,7 @@ "name": "micro/kernel", "type": "library", "description": "", - "version": "1.0", + "version": "1.1", "license": "MIT", "autoload": { "psr-4": { @@ -17,7 +17,6 @@ ], "require": { "php": ">=8.0", - "micro/dependency-injection": "^1", - "micro/event-emitter": "^1" + "micro/dependency-injection": "^1" } } diff --git a/src/Configuration/ApplicationConfigurationFactoryInterface.php b/src/Configuration/ApplicationConfigurationFactoryInterface.php deleted file mode 100755 index 05d81f4..0000000 --- a/src/Configuration/ApplicationConfigurationFactoryInterface.php +++ /dev/null @@ -1,11 +0,0 @@ - $configuration - */ - public function __construct(private array $configuration) - { - } - - /** - * {@inheritDoc} - */ - public function get(string $key, $default = null, bool $nullable = true): mixed - { - if(is_bool($default)) { - return $this->getBooleanValue($key, $default); - } - - $value = $this->getValue($key, $default); - - if($nullable === false && !$value && !is_numeric($value)) { - throw new InvalidConfigurationException(sprintf('Configuration key "%s" can not be NULL', $key)); - } - - return $value; - } - - /** - * @param string $key - * @param bool $default - * - * @return bool - */ - protected function getBooleanValue(string $key, bool $default): bool - { - $value = $this->getValue($key, $default); - if($value === null) { - return $default; - } - - return in_array(mb_strtolower($value), self::BOOLEAN_TRUE, true); - } - - /** - * @param string $key - * @param mixed $default - * - * @return mixed - */ - protected function getValue(string $key, mixed $default): mixed - { - return $this->configuration[$key] ?? $default; - } -} diff --git a/src/Configuration/DefaultApplicationConfigurationFactory.php b/src/Configuration/DefaultApplicationConfigurationFactory.php deleted file mode 100755 index cd39939..0000000 --- a/src/Configuration/DefaultApplicationConfigurationFactory.php +++ /dev/null @@ -1,21 +0,0 @@ - $configuration - */ - public function __construct(private array $configuration) - { - } - - /** - * @return ApplicationConfigurationInterface - */ - public function create(): ApplicationConfigurationInterface - { - return new DefaultApplicationConfiguration($this->configuration); - } -} diff --git a/src/Configuration/Exception/InvalidConfigurationException.php b/src/Configuration/Exception/InvalidConfigurationException.php deleted file mode 100755 index dde0884..0000000 --- a/src/Configuration/Exception/InvalidConfigurationException.php +++ /dev/null @@ -1,7 +0,0 @@ -configRoutingKey)); - } - - /** - * @param string $key - * @param mixed $default - * @param bool $nullable - * @return mixed - */ - protected function get(string $key, mixed $default = null, bool $nullable = true): mixed - { - return $this->configuration->get( - $this->cfg($key), - $default, - $nullable - ); - } -} diff --git a/src/Configuration/Resolver/PluginConfigurationClassResolver.php b/src/Configuration/Resolver/PluginConfigurationClassResolver.php deleted file mode 100755 index bc7eb5c..0000000 --- a/src/Configuration/Resolver/PluginConfigurationClassResolver.php +++ /dev/null @@ -1,65 +0,0 @@ -getPluginClassResolvers() as $resolver) { - $configClass = $resolver->resolve($this->pluginClass); - - if(!class_exists($configClass)) { - continue; - } - - $configClasses[] = $configClass; - } - - if(count($configClasses) > 1) { - throw new \RuntimeException( - sprintf( - 'Too many configuration classes for Application plugin "%s". [%s]', - $this->pluginClass, - implode(", ", $configClasses) - ) - ); - } - /** @var class-string $configClass */ - $configClass = $configClasses[0] ?? $configClassDefault; - - return new $configClass($this->applicationConfiguration); - } - - /** - * @return PluginConfigurationClassResolverInterface[] - */ - protected function getPluginClassResolvers(): array - { - return [ - new PluginNameResolver(), - new PluginNameShortResolver(), - ]; - } -} diff --git a/src/Configuration/Resolver/PluginConfigurationClassResolverInterface.php b/src/Configuration/Resolver/PluginConfigurationClassResolverInterface.php deleted file mode 100755 index 8e348c8..0000000 --- a/src/Configuration/Resolver/PluginConfigurationClassResolverInterface.php +++ /dev/null @@ -1,12 +0,0 @@ -isStarted = false; @@ -85,9 +79,7 @@ public function container(): Container */ protected function loadPlugin(string $applicationPluginClass): void { - $pluginConfiguration = $this->resolvePluginConfiguration($applicationPluginClass); - /** @var ApplicationPluginInterface $plugin */ - $plugin = new $applicationPluginClass($pluginConfiguration); + $plugin = new $applicationPluginClass(); foreach ($this->pluginBootLoaderCollection as $bootLoader) { $bootLoader->boot($plugin); @@ -108,24 +100,6 @@ public function plugins(string $interfaceInherited = null): iterable } } - /** - * @param string $applicationPluginClass - * @return PluginConfigurationClassResolver - */ - protected function createPluginConfigurationResolver(string $applicationPluginClass): PluginConfigurationClassResolver - { - return new PluginConfigurationClassResolver($applicationPluginClass, $this->configuration); - } - - /** - * @param string $applicationPluginClass - * @return PluginConfigurationInterface - */ - protected function resolvePluginConfiguration(string $applicationPluginClass): PluginConfigurationInterface - { - return $this->createPluginConfigurationResolver($applicationPluginClass)->resolve(); - } - /** * @return void */ diff --git a/src/KernelBuilder.php b/src/KernelBuilder.php index e250261..058c0f6 100755 --- a/src/KernelBuilder.php +++ b/src/KernelBuilder.php @@ -3,28 +3,23 @@ namespace Micro\Framework\Kernel; use Micro\Component\DependencyInjection\Container; -use Micro\Framework\Kernel\Configuration\ApplicationConfigurationInterface; use Micro\Framework\Kernel\Container\ApplicationContainerFactoryInterface; use Micro\Framework\Kernel\Container\Impl\ApplicationContainerFactory; use Micro\Framework\Kernel\Plugin\ApplicationPluginInterface; use Micro\Framework\Kernel\Plugin\PluginBootLoaderInterface; +use Psr\Container\ContainerInterface; class KernelBuilder { /** - * @var ApplicationPluginInterface[] + * @var iterable */ - private array $pluginCollection; + private iterable $pluginCollection; /** - * @var ApplicationConfigurationInterface|null + * @var iterable */ - private ?ApplicationConfigurationInterface $configuration; - - /** - * @var PluginBootLoaderInterface[] - */ - private array $bootLoaderPluginCollection; + private iterable $bootLoaderPluginCollection; /** * @var Container|null @@ -35,15 +30,15 @@ public function __construct() { $this->pluginCollection = []; $this->bootLoaderPluginCollection = []; - $this->configuration = null; $this->container = null; } /** * @param array $applicationPluginCollection + * * @return $this */ - public function setApplicationPlugins(array $applicationPluginCollection): self + public function setApplicationPlugins(iterable $applicationPluginCollection): self { $this->pluginCollection = $applicationPluginCollection; @@ -65,7 +60,7 @@ public function addBootLoader(PluginBootLoaderInterface $bootLoader): self * @param PluginBootLoaderInterface[] $bootLoaderCollection * @return $this */ - public function setBootLoaders(array $bootLoaderCollection): self + public function addBootLoaders(iterable $bootLoaderCollection): self { foreach ($bootLoaderCollection as $bootLoader) { $this->addBootLoader($bootLoader); @@ -74,22 +69,12 @@ public function setBootLoaders(array $bootLoaderCollection): self return $this; } - /** - * @param ApplicationConfigurationInterface $configuration - * @return $this - */ - public function setApplicationConfiguration(ApplicationConfigurationInterface $configuration): self - { - $this->configuration = $configuration; - - return $this; - } - /** * @param Container $container + * * @return $this */ - public function setContainer(Container $container): self + public function setContainer(ContainerInterface $container): self { $this->container = $container; @@ -119,7 +104,6 @@ public function build(): KernelInterface { return new Kernel( $this->pluginCollection, - $this->configuration, $this->bootLoaderPluginCollection, $this->container(), ); diff --git a/src/Plugin/AbstractPlugin.php b/src/Plugin/AbstractPlugin.php deleted file mode 100755 index 1c1e7bf..0000000 --- a/src/Plugin/AbstractPlugin.php +++ /dev/null @@ -1,34 +0,0 @@ -configuration; - } - - /** - * @return string - */ - public function name(): string - { - return get_class($this); - } -} diff --git a/src/Plugin/ApplicationPluginInterface.php b/src/Plugin/ApplicationPluginInterface.php deleted file mode 100755 index dcf7711..0000000 --- a/src/Plugin/ApplicationPluginInterface.php +++ /dev/null @@ -1,19 +0,0 @@ -