From e6dde06b64cf70bfc571cf4d5248ed7ea2ac7d62 Mon Sep 17 00:00:00 2001 From: Burhan Ibrahimi Date: Sun, 5 Mar 2023 14:56:50 +0100 Subject: [PATCH 1/2] Update name to allow enums in configuration --- DependencyInjection.php | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/DependencyInjection.php b/DependencyInjection.php index 0c1fe92..246732d 100644 --- a/DependencyInjection.php +++ b/DependencyInjection.php @@ -83,7 +83,13 @@ protected function registerProducers(Configuration $config) { $autoDeclare = $config->auto_declare; foreach ($config->producers as $options) { - $serviceAlias = sprintf(Configuration::PRODUCER_SERVICE_NAME, $options['name']); + + $name = $options['name']; + if(is_a($name, \UnitEnum::class)){ + $name = $name->name; + } + + $serviceAlias = sprintf(Configuration::PRODUCER_SERVICE_NAME, $name); \Yii::$container->setSingleton($serviceAlias, function () use ($options, $autoDeclare) { /** * @var $connection AbstractConnection @@ -98,7 +104,7 @@ protected function registerProducers(Configuration $config) */ $logger = \Yii::$container->get(Configuration::LOGGER_SERVICE_NAME); $producer = new Producer($connection, $routing, $logger, $autoDeclare); - \Yii::$container->invoke([$producer, 'setName'], [$options['name']]); + \Yii::$container->invoke([$producer, 'setName'], [$name]); \Yii::$container->invoke([$producer, 'setContentType'], [$options['content_type']]); \Yii::$container->invoke([$producer, 'setDeliveryMode'], [$options['delivery_mode']]); \Yii::$container->invoke([$producer, 'setSafe'], [$options['safe']]); @@ -117,7 +123,13 @@ protected function registerConsumers(Configuration $config) { $autoDeclare = $config->auto_declare; foreach ($config->consumers as $options) { - $serviceAlias = sprintf(Configuration::CONSUMER_SERVICE_NAME, $options['name']); + + $name = $options['name']; + if(is_a($name, \UnitEnum::class)){ + $name = $name->name; + } + + $serviceAlias = sprintf(Configuration::CONSUMER_SERVICE_NAME, $name); \Yii::$container->setSingleton($serviceAlias, function () use ($options, $autoDeclare) { /** * @var $connection AbstractConnection @@ -137,7 +149,7 @@ protected function registerConsumers(Configuration $config) $callbackClass = $this->getCallbackClass($callback); $queues[$queueName] = [$callbackClass, 'execute']; } - \Yii::$container->invoke([$consumer, 'setName'], [$options['name']]); + \Yii::$container->invoke([$consumer, 'setName'], [$name]); \Yii::$container->invoke([$consumer, 'setQueues'], [$queues]); \Yii::$container->invoke([$consumer, 'setQos'], [$options['qos']]); \Yii::$container->invoke([$consumer, 'setIdleTimeout'], [$options['idle_timeout']]); From 6e9b1cf1c34e90f4c616c24a13d4c3f78a48ac8f Mon Sep 17 00:00:00 2001 From: Burhan Ibrahimi Date: Sun, 5 Mar 2023 14:58:29 +0100 Subject: [PATCH 2/2] Update configuration to php 8.2 with enums. --- Configuration.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Configuration.php b/Configuration.php index 9d5d2aa..d522795 100644 --- a/Configuration.php +++ b/Configuration.php @@ -400,10 +400,16 @@ protected function validateDuplicateNames(array $keys) if (!isset($item['name'])) { $item['name'] = ''; } - if (isset($names[$item['name']])) { - throw new InvalidConfigException("Duplicate name `{$item['name']}` in {$key}"); + + $name = $item['name']; + if(is_a($name, \UnitEnum::class)){ + $name = $item['name']->name; } - $names[$item['name']] = true; + + if (isset($names[$name])) { + throw new InvalidConfigException("Duplicate name `{$name}` in {$key}"); + } + $names[$name] = true; } } }