From 24d4daec90af7bbfabe11b932217baf1bbb97eda Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 26 Oct 2021 00:32:32 +0100 Subject: [PATCH] Utils::testValidInstance() now accepts interfaces for the baseName --- src/utils/Utils.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/utils/Utils.php b/src/utils/Utils.php index de1ade0bd..bd4d8ea69 100644 --- a/src/utils/Utils.php +++ b/src/utils/Utils.php @@ -53,6 +53,7 @@ use function get_loaded_extensions; use function getenv; use function gettype; use function implode; +use function interface_exists; use function is_array; use function is_bool; use function is_int; @@ -513,14 +514,18 @@ final class Utils{ * @phpstan-param class-string $baseName */ public static function testValidInstance(string $className, string $baseName) : void{ + $baseInterface = false; if(!class_exists($baseName)){ - throw new \InvalidArgumentException("Base class $baseName does not exist"); + if(!interface_exists($baseName)){ + throw new \InvalidArgumentException("Base class $baseName does not exist"); + } + $baseInterface = true; } if(!class_exists($className)){ - throw new \InvalidArgumentException("Class $className does not exist"); + throw new \InvalidArgumentException("Class $className does not exist or is not a class"); } if(!is_a($className, $baseName, true)){ - throw new \InvalidArgumentException("Class $className does not extend or implement $baseName"); + throw new \InvalidArgumentException("Class $className does not " . ($baseInterface ? "implement" : "extend") . " $baseName"); } $class = new \ReflectionClass($className); if(!$class->isInstantiable()){