diff --git a/lib/MagicProperties.php b/lib/MagicProperties.php index b7fcbeb..b8ee75e 100644 --- a/lib/MagicProperties.php +++ b/lib/MagicProperties.php @@ -57,14 +57,25 @@ trait MagicProperties { if (!isset($protectedMethodsList[$this::class])) { $reflector = new \ReflectionClass($this); // Magic property methods are protected - $protectedMethodsList[$this::class] = $reflector->getMethods(\ReflectionMethod::IS_PROTECTED); - } + $methodsList = $reflector->getMethods(\ReflectionMethod::IS_PROTECTED); + $temp = []; + $valid = false; + // Only cache the magic methods + foreach ($methodsList as $m) { + if (str_starts_with($m->name, '__get_') || str_starts_with($m->name, '__set_')) { + $temp[] = $m->name; - foreach ($protectedMethodsList[$this::class] as $method) { - if ($method->name === $methodName) { - return $methodName; + if (!$valid && $m->name === $methodName) { + $valid = true; + } + } } + + $protectedMethodsList[$this::class] = $temp; + return ($valid) ? $methodName : null; } + + return (in_array($methodName, $protectedMethodsList[$this::class])) ? $methodName : null; } return null;