From 8dd3c16c6bde0c1d15cd7b06275c375da2961341 Mon Sep 17 00:00:00 2001 From: Alex Standiford Date: Wed, 28 May 2025 11:45:51 -0500 Subject: [PATCH 1/2] Add Support For Tasks --- lib/Traits/CanLoadInitializers.php | 31 +++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/lib/Traits/CanLoadInitializers.php b/lib/Traits/CanLoadInitializers.php index 24509de..2642fc9 100644 --- a/lib/Traits/CanLoadInitializers.php +++ b/lib/Traits/CanLoadInitializers.php @@ -21,6 +21,9 @@ use PHPNomad\Mutator\Interfaces\MutationStrategy; use PHPNomad\Rest\Interfaces\HasControllers; use PHPNomad\Rest\Interfaces\RestStrategy; +use PHPNomad\Tasks\Interfaces\HasTaskHandlers; +use PHPNomad\Tasks\Interfaces\Task; +use PHPNomad\Tasks\Interfaces\TaskStrategy; use PHPNomad\Update\Events\UpgradeRoutinesRequested; use PHPNomad\Update\Interfaces\HasUpdates; use PHPNomad\Utils\Helpers\Arr; @@ -29,14 +32,8 @@ trait CanLoadInitializers { protected InstanceProvider $container; - /** - * @var array[HasClassDefinitions|Loadable|HasLoadCondition|HasFacades|HasListeners|HasMutations|HasEventBindings] - */ protected array $initializers = []; - /** - * @throws LoaderException - */ protected function loadInitializers() { foreach ($this->initializers as $initializer) { @@ -44,11 +41,6 @@ protected function loadInitializers() } } - /** - * @param HasClassDefinitions|Loadable|HasLoadCondition|HasFacades|HasListeners|HasMutations|HasEventBindings|HasControllers $initializer - * @return void - * @throws LoaderException - */ protected function loadInitializer($initializer): void { try { @@ -56,7 +48,6 @@ protected function loadInitializer($initializer): void $initializer->setContainer($this->container); } - // Bail early if this has a load condition preventing it from loading. if ($initializer instanceof HasLoadCondition && !$initializer->shouldLoad()) { return; } @@ -90,7 +81,6 @@ protected function loadInitializer($initializer): void } if ($initializer instanceof HasListeners) { - /** @var EventStrategy $instance */ $events = $this->container->get(EventStrategy::class); foreach ($initializer->getListeners() as $event => $handlers) { @@ -103,8 +93,19 @@ protected function loadInitializer($initializer): void } } + if ($initializer instanceof HasTaskHandlers) { + $strategy = $this->container->get(TaskStrategy::class); + + foreach ($initializer->getTaskHandlers() as $taskClass => $handlers) { + foreach (Arr::wrap($handlers) as $handlerClass) { + $strategy->attach($taskClass, fn(Task $task) => + $this->container->get($handlerClass)->handle($task) + ); + } + } + } + if ($initializer instanceof HasUpdates) { - /** @var EventStrategy $instance */ $events = $this->container->get(EventStrategy::class); $events->attach( @@ -140,4 +141,4 @@ protected function loadInitializer($initializer): void throw new LoaderException('Failed to load ' . get_class($initializer), 500, $e); } } -} \ No newline at end of file +} From 6e2a4310a3f51668a09f8e75819380ae357ea7d7 Mon Sep 17 00:00:00 2001 From: Alex Standiford Date: Wed, 28 May 2025 12:48:22 -0400 Subject: [PATCH 2/2] Updates loader --- lib/Traits/CanLoadInitializers.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/Traits/CanLoadInitializers.php b/lib/Traits/CanLoadInitializers.php index 2642fc9..6d03717 100644 --- a/lib/Traits/CanLoadInitializers.php +++ b/lib/Traits/CanLoadInitializers.php @@ -32,8 +32,15 @@ trait CanLoadInitializers { protected InstanceProvider $container; + /** + * @var array[HasClassDefinitions|Loadable|HasLoadCondition|HasFacades|HasListeners|HasMutations|HasEventBindings|HasTaskHandlers] + */ protected array $initializers = []; + /** + * @return void + * @throws LoaderException + */ protected function loadInitializers() { foreach ($this->initializers as $initializer) {