This commit is contained in:
Dave Mc Nicoll 2024-06-04 13:33:11 +00:00
parent c92baf6cda
commit dd680c8a9a
4 changed files with 14 additions and 9 deletions

View File

@ -69,10 +69,10 @@ abstract class Reflected
}
}
return $list;
return array_reverse($list);
}
return $this->attributes;
return array_reverse($this->attributes);
}
public function getAttribute(string|array $attributeType): ?object

View File

@ -40,11 +40,16 @@ class ReflectedClass implements ReflectedInterface
}
public function getAttributes(bool $deep = true, ? string $attributeType = null) : array
{
return array_reverse($this->getOrderedAttributes($deep, $attributeType));
}
protected function getOrderedAttributes(bool $deep = true, ? string $attributeType = null) : array
{
$attributes = $deep ? array_merge(
$this->parent ? $this->parent->getAttributes(true) : [],
array_merge(...array_map(fn($e) => $e->getAttributes(true), $this->interfaces)),
array_merge(...array_map(fn($e) => $e->getAttributes(true), $this->traits)),
$this->parent ? $this->parent->getOrderedAttributes(true) : [],
array_merge(...array_map(fn($e) => $e->getOrderedAttributes(true), $this->interfaces)),
array_merge(...array_map(fn($e) => $e->getOrderedAttributes(true), $this->traits)),
$this->attributes
) : $this->attributes;
@ -167,7 +172,7 @@ class ReflectedClass implements ReflectedInterface
public function getAttribute(string $attributeType): ?object
{
foreach($this->getAttributes($attributeType) as $attribute) {
foreach($this->getAttributes(true, $attributeType) as $attribute) {
if ($attribute->object instanceof $attributeType) {
return $attribute;
}

View File

@ -99,7 +99,7 @@ class RouteFetcher {
$objects = $objectResolver->reflectedClass->getClassAttributeListFromClassname($attributes['object'], true, false);
foreach(array_reverse($objects) as $object) {
foreach($objects as $object) {
if ($object->method ?? false ) {
$methods ??= (array) $object->method;
}

View File

@ -34,7 +34,7 @@ class SecurityHandler {
{
# Searching method first and fallbacking on object if none found
if ( $list = $this->findAttributes(Attribute\Security::class, $className, $methodName) ) {
return array_pop($list)->locked;
return array_shift($list)->locked;
}
return true;