Am 04.05.2026, 22:24:39 schrieb Daniel Scherzer <[email protected]
>:

> Hi internals,
>
> I'd like to start the discussion for a new RFC about adding a new method,
> ReflectionAttribute::getCurrent(), to access the current reflection target
> of an attribute.
>
> * RFC: https://wiki.php.net/rfc/reflectionattribute-getcurrent
> * Implementation: https://github.com/php/php-src/pull/21440
>
> Thanks,
> -Daniel
>

Hi Daniel,

I am not convinced this is needed. At every call site of
$reflector->getAttributes() you could inject the reflector back into the
attributes.

$attributes = $reflector->getAttributes();
foreach ($attributes as $attribute) {
     $instance = $attribute->newInstance();
     $instance->setReflector($reflector);
}

If you have a framework, or library, handling attributes, you could
introduce an interface: ReflectionAwareAttribute with setReflector() to
generalize this:

foreach ($attributes as $attribute) {
     $instance = $attribute->newInstance();
     if ($instance instanceof ReflectionAwareAttribute) {
          $instance->setReflector($reflector);
    }
}

The „magic" of this method knowing its context reminds me of internal
functions that were en voque in PHP 3/4 times, but for example
get.class(null) is not allowed anymore, func_get_args() is now superseded
by …$args and so on.

IFF we decide this is helpful, could we think about doing this with
interface injection like the code above or AttributeUtils?

greetings
Benjamin

Reply via email to