From 07a128f922b2b08bb4c1525f9adb111cd4d82939 Mon Sep 17 00:00:00 2001 From: Marc Jauvin Date: Fri, 20 Feb 2026 01:20:42 -0500 Subject: [PATCH 1/2] make sure implement array properties are unique --- src/Extension/ExtendableTrait.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Extension/ExtendableTrait.php b/src/Extension/ExtendableTrait.php index 23c9a90e..4d4a6f56 100644 --- a/src/Extension/ExtendableTrait.php +++ b/src/Extension/ExtendableTrait.php @@ -84,7 +84,7 @@ public function extendableConstruct() return; } - foreach ($uses as $use) { + foreach (array_unique($uses) as $use) { $useClass = $this->extensionNormalizeClassName($use); /* From 7d03dbea5a2da6fe1615eccadaeba05cebfd4396 Mon Sep 17 00:00:00 2001 From: Marc Jauvin Date: Fri, 20 Feb 2026 01:49:09 -0500 Subject: [PATCH 2/2] prevent duplication in extendableCallStatic for consistency --- src/Extension/ExtendableTrait.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Extension/ExtendableTrait.php b/src/Extension/ExtendableTrait.php index 4d4a6f56..bca0667f 100644 --- a/src/Extension/ExtendableTrait.php +++ b/src/Extension/ExtendableTrait.php @@ -489,7 +489,7 @@ public static function extendableCallStatic($name, $params = null) throw new Exception(sprintf('Class %s contains an invalid $implement value', $className)); } - foreach ($uses as $use) { + foreach (array_unique($uses) as $use) { // Class alias checks not required here as the current name of the extension class doesn't // matter because as long as $useClassName is able to be instantiated the method will resolve $useClassName = str_replace('.', '\\', trim($use));