From a889bdcbb4e6b9d497490fcb4e6e06c384779e86 Mon Sep 17 00:00:00 2001 From: Daniel Gohlke Date: Fri, 24 Apr 2026 17:58:43 +0200 Subject: [PATCH] [TASK] Inject all dependencies via php and remove Services.yaml --- Configuration/Services.php | 34 +++++ Configuration/Services.yaml | 85 ------------- Configuration/Services/EventListeners.php | 144 ++++++++++++++++++++++ 3 files changed, 178 insertions(+), 85 deletions(-) delete mode 100644 Configuration/Services.yaml create mode 100644 Configuration/Services/EventListeners.php diff --git a/Configuration/Services.php b/Configuration/Services.php index a6f964b..0e32bd6 100644 --- a/Configuration/Services.php +++ b/Configuration/Services.php @@ -5,6 +5,8 @@ namespace Extcode\CartProducts\Configuration; use Extcode\CartProducts\Handler\WatchlistItemHandler; +use Extcode\CartProducts\Hooks\DataHandler; +use Extcode\CartProducts\Reaction\UpdateStockReaction; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Definition; use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; @@ -24,4 +26,36 @@ ] ); } + + $services = $containerConfigurator + ->services() + ->defaults() + ->autowire() + ->autoconfigure() + ; + + $services + ->load( + 'Extcode\\CartProducts\\', + '../Classes/*' + ) + ->exclude( + [ + '../Classes/Handler/WatchlistItemHandler.php', + ] + ) + ; + + $services + ->set(DataHandler::class) + ->public() + ; + + $services + ->set(UpdateStockReaction::class) + ->tag('reactions.reaction') + ->public() + ; + + $containerConfigurator->import('Services/EventListeners.php'); }; diff --git a/Configuration/Services.yaml b/Configuration/Services.yaml deleted file mode 100644 index b2ed444..0000000 --- a/Configuration/Services.yaml +++ /dev/null @@ -1,85 +0,0 @@ -services: - _defaults: - autowire: true - autoconfigure: true - public: false - - Extcode\CartProducts\: - resource: '../Classes/*' - exclude: - - '../Classes/Handler/WatchlistItemHandler.php' - - Extcode\CartProducts\EventListener\Create\CheckRequest: - tags: - - name: event.listener - identifier: 'cart-products--create--check-request' - event: Extcode\CartProducts\Event\RetrieveProductsFromRequestEvent - - Extcode\CartProducts\EventListener\Create\LoadProduct: - tags: - - name: event.listener - identifier: 'cart-products--create--load-product' - event: Extcode\CartProducts\Event\RetrieveProductsFromRequestEvent - after: 'cart-products--create--check-request' - - Extcode\CartProducts\EventListener\Create\CreateCartFrontendVariants: - tags: - - name: event.listener - identifier: 'cart-products--create--create-cart-frontend-variants' - event: Extcode\CartProducts\Event\RetrieveProductsFromRequestEvent - after: 'cart-products--create--load-product' - - Extcode\CartProducts\EventListener\Create\CreateCartProduct: - tags: - - name: event.listener - identifier: 'cart-products--create--create-cart-product' - event: Extcode\CartProducts\Event\RetrieveProductsFromRequestEvent - after: 'cart-products--create--create-cart-frontend-variants' - - Extcode\CartProducts\EventListener\Create\CreateCartBackendVariants: - tags: - - name: event.listener - identifier: 'cart-products--create--create-cart-backend-variants' - event: Extcode\CartProducts\Event\RetrieveProductsFromRequestEvent - after: 'cart-products--create--create-cart-product' - - Extcode\CartProducts\EventListener\Order\Stock\HandleStock: - tags: - - name: event.listener - identifier: 'cart-products--order--stock--handle-stock' - event: Extcode\Cart\Event\Order\StockEvent - - Extcode\CartProducts\EventListener\Order\Stock\FlushCache: - tags: - - name: event.listener - identifier: 'cart-products--order--stock--flush-cache' - event: Extcode\Cart\Event\Order\StockEvent - after: 'cart-books--order--stock--handle-stock' - - Extcode\CartProducts\EventListener\RetrieveProductsFromRequest: - tags: - - name: event.listener - identifier: 'cart-products--retrieve-products-from-request' - event: Extcode\Cart\Event\RetrieveProductsFromRequestEvent - - Extcode\CartProducts\EventListener\CheckProductAvailability: - tags: - - name: event.listener - identifier: 'cart-products--check-product-availability' - event: Extcode\Cart\Event\CheckProductAvailabilityEvent - - Extcode\CartProducts\EventListener\Order\Stock\CheckStock: - tags: - - name: event.listener - identifier: 'cart-products--order--stock-check-stock' - event: Extcode\Cart\Event\ProcessOrderCheckStockEvent - - Extcode\CartProducts\Hooks\DataHandler: - public: true - - Extcode\CartProducts\Reaction\UpdateStockReaction: - tags: ['reactions.reaction'] - public: true - - Extcode\CartProducts\Updates\SlugUpdater: - public: true diff --git a/Configuration/Services/EventListeners.php b/Configuration/Services/EventListeners.php new file mode 100644 index 0000000..b9fc351 --- /dev/null +++ b/Configuration/Services/EventListeners.php @@ -0,0 +1,144 @@ +services() + ->defaults() + ->autowire() + ->autoconfigure() + ; + + $services + ->set(CheckRequest::class) + ->tag( + 'event.listener', + [ + 'event' => CartProductsRetrieveProductsFromRequestEvent::class, + 'identifier' => 'cart-products--create--check-request', + ] + ) + ; + + $services + ->set(LoadProduct::class) + ->tag( + 'event.listener', + [ + 'event' => CartProductsRetrieveProductsFromRequestEvent::class, + 'identifier' => 'cart-products--create--load-product', + 'after' => 'cart-products--create--check-request', + ] + ) + ; + + $services + ->set(CreateCartFrontendVariants::class) + ->tag( + 'event.listener', + [ + 'event' => CartProductsRetrieveProductsFromRequestEvent::class, + 'identifier' => 'cart-products--create--create-cart-frontend-variants', + 'after' => 'cart-products--create--load-product', + ] + ) + ; + + $services + ->set(CreateCartProduct::class) + ->tag( + 'event.listener', + [ + 'event' => CartProductsRetrieveProductsFromRequestEvent::class, + 'identifier' => 'cart-products--create--create-cart-product', + 'after' => 'cart-products--create--create-cart-frontend-variants', + ] + ) + ; + + $services + ->set(CreateCartBackendVariants::class) + ->tag( + 'event.listener', + [ + 'event' => CartProductsRetrieveProductsFromRequestEvent::class, + 'identifier' => 'cart-products--create--create-cart-backend-variants', + 'after' => 'cart-products--create--create-cart-product', + ] + ) + ; + + $services + ->set(HandleStock::class) + ->tag( + 'event.listener', + [ + 'event' => StockEvent::class, + 'identifier' => 'cart-products--order--stock--handle-stock', + ] + ) + ; + + $services + ->set(FlushCache::class) + ->tag( + 'event.listener', + [ + 'event' => StockEvent::class, + 'identifier' => 'cart-products--order--stock--flush-cache', + 'after' => 'cart-books--order--stock--handle-stock', + ] + ) + ; + + $services + ->set(RetrieveProductsFromRequest::class) + ->tag( + 'event.listener', + [ + 'event' => CartRetrieveProductsFromRequestEvent::class, + 'identifier' => 'cart-products--retrieve-products-from-request', + ] + ) + ; + + $services + ->set(CheckProductAvailability::class) + ->tag( + 'event.listener', + [ + 'event' => CheckProductAvailabilityEvent::class, + 'identifier' => 'cart-products--check-product-availability', + ] + ) + ; + + $services + ->set(CheckStock::class) + ->tag( + 'event.listener', + [ + 'event' => ProcessOrderCheckStockEvent::class, + 'identifier' => 'cart-products--order--stock-check-stock', + ] + ) + ; +};