Re: ReflectionAttribute: IS_INSTANCEOF and getTarget()

alex <[email protected]> Mon, 13 Nov 2023 12:50:21 +0100
Newsgroups comp.lang.php
Organization A noiseless patient Spider
Message-ID <[email protected]>
Il 13/11/23 07:54, J.O. Aho ha scritto:
>> https://www.php.net/manual/en/reflectionattribute.gettarget.php
> 
> There are a number of attributes you can give a class, TARGET_* and you 
> will get the sum of all those targets as an unified bit value. 0 if none 
> of the TARGET_* are set.

mmmhhh...

Are you sure?
An example? (here's mine below)

~$ cat /tmp/aaa
<?php

#[ATTRIB]
class TARGET_CLASS {

     #[ATTRIB]
     function TARGET_METHOD() {}

}

#[ATTRIB]
function TARGET_FUNCTION() {}

function TARGET_xxx() {}

$reflections = [
     new ReflectionClass('TARGET_CLASS'),
     new ReflectionMethod('TARGET_CLASS::TARGET_METHOD'),
     new ReflectionFunction('TARGET_FUNCTION'),
     new ReflectionFunction('TARGET_xxx'),
];

foreach ($reflections as $reflection) {
     echo $reflection->getName() . ': ';
     echo $reflection->getAttributes()[0]->getTarget() || "IS ZERO";
     echo PHP_EOL;
}
~$ php /tmp/aaa
TARGET_CLASS: 1
TARGET_METHOD: 1
TARGET_FUNCTION: 1
TARGET_xxx: PHP Warning:  Undefined array key 0 in /tmp/aaa on line 25
PHP Fatal error:  Uncaught Error: Call to a member function getTarget() 
on null in /tmp/aaa:25

REPEAT:
An example?

>> https://www.php.net/manual/en/class.reflectionattribute.php#reflectionattribute.constants.is-instanceof
> 
> this will give you something like typeof for the instance in question.

typeof...???

https://www.google.com/search?channel=fs&client=ubuntu-sn&q=php+typeof#ip=1