PHP: Hypertext Preprocessor (original) (raw)
ReflectionFunctionAbstract::getAttributes
(PHP 8)
ReflectionFunctionAbstract::getAttributes — Gets Attributes
Description
public ReflectionFunctionAbstract::getAttributes(?string $name
= [null](reserved.constants.php#constant.null)
, int $flags
= 0): array
Parameters
name
Filter the results to include only ReflectionAttribute instances for attributes matching this class name.
flags
Flags for determining how to filter the results, if name
is provided.
Default is 0
which will only return results for attributes that are of the class name
.
The only other option available, is to use [ReflectionAttribute::IS_INSTANCEOF](class.reflectionattribute.php#reflectionattribute.constants.is-instanceof)
, which will instead use instanceof
for filtering.
Examples
Example #1 Basic usage with a class method
`<?php
#[Attribute]
class Fruit {
}
#[
Attribute]
class Red {
}
class
Factory {
#[Fruit]
#[Red]
public function makeApple(): string
{
return 'apple';
}
}$method = new ReflectionMethod('Factory', 'makeApple'); attributes=attributes = attributes=method->getAttributes();
print_r(array_map(fn($attribute) => attribute−>getName(),attribute->getName(), attribute−>getName(),attributes));
?>`
The above example will output:
Array ( [0] => Fruit [1] => Red )
Example #2 Basic usage with a function
`<?php
#[Attribute]
class Fruit {
}
#[
Attribute]
class Red {
}
#[
Fruit]
#[Red]
function makeApple(): string
{
return 'apple';
}$function = new ReflectionFunction('makeApple'); attributes=attributes = attributes=function->getAttributes();
print_r(array_map(fn($attribute) => attribute−>getName(),attribute->getName(), attribute−>getName(),attributes));
?>`
The above example will output:
Array ( [0] => Fruit [1] => Red )
Example #3 Filtering results by class name
`<?php
#[Attribute]
class Fruit {
}
#[
Attribute]
class Red {
}
#[
Fruit]
#[Red]
function makeApple(): string
{
return 'apple';
}$function = new ReflectionFunction('makeApple'); attributes=attributes = attributes=function->getAttributes('Fruit');
print_r(array_map(fn($attribute) => attribute−>getName(),attribute->getName(), attribute−>getName(),attributes));
?>`
The above example will output:
Example #4 Filtering results by class name, with inheritance
`<?php
interface Color {
}
#[
Attribute]
class Fruit {
}
#[
Attribute]
class Red implements Color {
}
#[
Fruit]
#[Red]
function makeApple(): string
{
return 'apple';
}$function = new ReflectionFunction('makeApple'); attributes=attributes = attributes=function->getAttributes('Color', ReflectionAttribute::IS_INSTANCEOF);
print_r(array_map(fn($attribute) => attribute−>getName(),attribute->getName(), attribute−>getName(),attributes));
?>`
The above example will output:
See Also
- ReflectionClass::getAttributes() - Gets Attributes
- ReflectionClassConstant::getAttributes() - Gets Attributes
- ReflectionParameter::getAttributes() - Gets Attributes
- ReflectionProperty::getAttributes() - Gets Attributes
Found A Problem?
There are no user contributed notes for this page.