From cf7785e1540eb21e10820c9d4688fa01cc4c621b Mon Sep 17 00:00:00 2001 From: Michael Sievenpiper Date: Fri, 7 Nov 2025 14:59:02 +0000 Subject: [PATCH 1/2] - enable multi observer - make interfacing more generic for reuse --- composer.json | 10 ++++++++-- src/Attributes/AttributeResult.php | 17 +++++++++++++++++ src/Attributes/ConditionResult.php | 11 ----------- .../AbstractConditionReturnsAttribute.php} | 17 +++++++---------- src/Attributes/Conditional/PreCondition.php | 10 ++++++++++ src/Attributes/Conditional/SkipCondition.php | 10 ++++++++++ src/Attributes/PreCondition.php | 10 ---------- .../ReturnsAttributeResultInterface.php | 10 ++++++++++ src/Attributes/SkipCondition.php | 10 ---------- src/Routing/ConditionProcessor.php | 10 ++++++---- 10 files changed, 68 insertions(+), 47 deletions(-) create mode 100644 src/Attributes/AttributeResult.php delete mode 100644 src/Attributes/ConditionResult.php rename src/Attributes/{AbstractConditionAttribute.php => Conditional/AbstractConditionReturnsAttribute.php} (54%) create mode 100644 src/Attributes/Conditional/PreCondition.php create mode 100644 src/Attributes/Conditional/SkipCondition.php delete mode 100644 src/Attributes/PreCondition.php create mode 100644 src/Attributes/ReturnsAttributeResultInterface.php delete mode 100644 src/Attributes/SkipCondition.php diff --git a/composer.json b/composer.json index 479fb9b..032feba 100644 --- a/composer.json +++ b/composer.json @@ -23,7 +23,7 @@ "packaged/config": "~1.5", "packaged/context": "^1.11", "packaged/context-i18n": "~1.0", - "packaged/di-container": "^1.7", + "packaged/di-container": "dev-multi-observer as 1.7", "packaged/event": "~1.2", "packaged/figlet": "~0.0", "packaged/helpers": "^2.15", @@ -51,5 +51,11 @@ "psr-4": { "Cubex\\Tests\\": "tests/" } - } + }, + "repositories": [ + { + "type": "git", + "url": "git@github.com:msievenpiper/di-container.git" + } + ] } diff --git a/src/Attributes/AttributeResult.php b/src/Attributes/AttributeResult.php new file mode 100644 index 0000000..4968264 --- /dev/null +++ b/src/Attributes/AttributeResult.php @@ -0,0 +1,17 @@ +_class = $class; - $this->_args = $args; } public function getClass(): string @@ -20,7 +17,7 @@ public function getClass(): string return $this->_class; } - public function result(?DependencyInjector $di): ConditionResult + public function result(?DependencyInjector $di): AttributeResult { $obj = null; @@ -33,7 +30,7 @@ public function result(?DependencyInjector $di): ConditionResult $obj = new $this->_class(...$this->_args); } - if($obj instanceof ConditionResult) + if($obj instanceof AttributeResult) { return $obj; } diff --git a/src/Attributes/Conditional/PreCondition.php b/src/Attributes/Conditional/PreCondition.php new file mode 100644 index 0000000..7ccf908 --- /dev/null +++ b/src/Attributes/Conditional/PreCondition.php @@ -0,0 +1,10 @@ +getName() === PreCondition::class) { - /** @var \Cubex\Attributes\AbstractConditionAttribute $condition */ + /** @var AbstractConditionReturnsAttribute $condition */ $condition = $attribute->newInstance(); $this->_conditions[$condition->getClass()] = $condition; } From 7497244e35b4ddd990b1ed4c7e20494aee3ae78b Mon Sep 17 00:00:00 2001 From: Michael Sievenpiper Date: Fri, 7 Nov 2025 16:55:54 +0000 Subject: [PATCH 2/2] - fix some naming bits --- ...ionReturnsAttribute.php => AbstractConditionAttribute.php} | 2 +- src/Attributes/Conditional/PreCondition.php | 2 +- src/Attributes/Conditional/SkipCondition.php | 2 +- src/Routing/ConditionProcessor.php | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) rename src/Attributes/Conditional/{AbstractConditionReturnsAttribute.php => AbstractConditionAttribute.php} (89%) diff --git a/src/Attributes/Conditional/AbstractConditionReturnsAttribute.php b/src/Attributes/Conditional/AbstractConditionAttribute.php similarity index 89% rename from src/Attributes/Conditional/AbstractConditionReturnsAttribute.php rename to src/Attributes/Conditional/AbstractConditionAttribute.php index f036221..14b2b16 100644 --- a/src/Attributes/Conditional/AbstractConditionReturnsAttribute.php +++ b/src/Attributes/Conditional/AbstractConditionAttribute.php @@ -6,7 +6,7 @@ use Cubex\Attributes\ReturnsAttributeResultInterface; use Packaged\DiContainer\DependencyInjector; -abstract class AbstractConditionReturnsAttribute implements ReturnsAttributeResultInterface +abstract class AbstractConditionAttribute implements ReturnsAttributeResultInterface { public function __construct(protected string $_class, protected array $_args = []) { diff --git a/src/Attributes/Conditional/PreCondition.php b/src/Attributes/Conditional/PreCondition.php index 7ccf908..1eb0a2d 100644 --- a/src/Attributes/Conditional/PreCondition.php +++ b/src/Attributes/Conditional/PreCondition.php @@ -5,6 +5,6 @@ use Attribute; #[Attribute(\Attribute::IS_REPEATABLE | \Attribute::TARGET_ALL)] -class PreCondition extends AbstractConditionReturnsAttribute +class PreCondition extends AbstractConditionAttribute { } diff --git a/src/Attributes/Conditional/SkipCondition.php b/src/Attributes/Conditional/SkipCondition.php index 00670bc..0b17f28 100644 --- a/src/Attributes/Conditional/SkipCondition.php +++ b/src/Attributes/Conditional/SkipCondition.php @@ -5,6 +5,6 @@ use Attribute; #[Attribute(\Attribute::IS_REPEATABLE | \Attribute::TARGET_ALL)] -class SkipCondition extends AbstractConditionReturnsAttribute +class SkipCondition extends AbstractConditionAttribute { } diff --git a/src/Routing/ConditionProcessor.php b/src/Routing/ConditionProcessor.php index 895ba1b..378a186 100644 --- a/src/Routing/ConditionProcessor.php +++ b/src/Routing/ConditionProcessor.php @@ -2,7 +2,7 @@ namespace Cubex\Routing; -use Cubex\Attributes\Conditional\AbstractConditionReturnsAttribute; +use Cubex\Attributes\Conditional\AbstractConditionAttribute; use Cubex\Attributes\Conditional\PreCondition; use Cubex\Attributes\Conditional\SkipCondition; use Cubex\Attributes\ReturnsAttributeResultInterface; @@ -50,7 +50,7 @@ protected function _processAttributes() } if($attribute->getName() === PreCondition::class) { - /** @var AbstractConditionReturnsAttribute $condition */ + /** @var AbstractConditionAttribute $condition */ $condition = $attribute->newInstance(); $this->_conditions[$condition->getClass()] = $condition; }