1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- --TEST--
- Bug GH-8421: Attributes that target functions are not valid for anonymous functions defined within a method
- --FILE--
- <?php
- #[Attribute(Attribute::TARGET_FUNCTION)]
- class FunctionAttribute
- {
- public int $number = 1;
- }
- $globalClosure = #[FunctionAttribute]
- fn() => true;
- $globalStaticClosure = #[FunctionAttribute]
- static fn() => true;
- class ClosureHolder
- {
- public function getClosureDefinedInScope(): Closure
- {
- return #[FunctionAttribute]
- fn() => true;
- }
- public function getStaticClosureDefinedInScope(): Closure
- {
- return #[FunctionAttribute]
- static fn() => true;
- }
- public static function getClosureDefinedInScopeStatically(): Closure
- {
- return #[FunctionAttribute]
- fn() => true;
- }
- public static function getStaticClosureDefinedInScopeStatically(): Closure
- {
- return #[FunctionAttribute]
- static fn() => true;
- }
- }
- var_dump((new ReflectionFunction($globalClosure))->getAttributes(FunctionAttribute::class)[0]->newInstance()->number);
- var_dump((new ReflectionFunction($globalStaticClosure))->getAttributes(FunctionAttribute::class)[0]->newInstance()->number);
- var_dump((new ReflectionFunction(ClosureHolder::getClosureDefinedInScopeStatically()))->getAttributes(FunctionAttribute::class)[0]->newInstance()->number);
- var_dump((new ReflectionFunction(ClosureHolder::getStaticClosureDefinedInScopeStatically()))->getAttributes(FunctionAttribute::class)[0]->newInstance()->number);
- $holder = new ClosureHolder;
- var_dump((new ReflectionFunction($holder->getClosureDefinedInScope()))->getAttributes(FunctionAttribute::class)[0]->newInstance()->number);
- var_dump((new ReflectionFunction($holder->getStaticClosureDefinedInScope()))->getAttributes(FunctionAttribute::class)[0]->newInstance()->number);
- ?>
- --EXPECT--
- int(1)
- int(1)
- int(1)
- int(1)
- int(1)
- int(1)
|