3v4l.org

run code in 300+ PHP versions simultaneously
<?php #[Attribute] enum DemoEnum {} #[Attribute] trait DemoTrait {} #[Attribute] abstract class DemoAbstract {} #[Attribute] interface DemoInterface {} #[DemoEnum] #[DemoTrait] #[DemoAbstract] #[DemoInterface] function usesWrongAttrib() {} $r = new ReflectionFunction( 'usesWrongAttrib' ); $a = $r->getAttributes(); var_dump( $a ); foreach ( $a as $attrib ) { try { $attrib->newInstance(); } catch ( Error $e ) { echo get_class( $e ) . ": " . $e->getMessage() . "\n"; } }
Output for 8.4.1 - 8.4.13
array(4) { [0]=> object(ReflectionAttribute)#2 (1) { ["name"]=> string(8) "DemoEnum" } [1]=> object(ReflectionAttribute)#3 (1) { ["name"]=> string(9) "DemoTrait" } [2]=> object(ReflectionAttribute)#4 (1) { ["name"]=> string(12) "DemoAbstract" } [3]=> object(ReflectionAttribute)#5 (1) { ["name"]=> string(13) "DemoInterface" } } Error: Cannot instantiate enum DemoEnum Error: Cannot instantiate trait DemoTrait Error: Cannot instantiate abstract class DemoAbstract Error: Cannot instantiate interface DemoInterface
Output for 8.2.0 - 8.2.29, 8.3.0 - 8.3.26
array(4) { [0]=> object(ReflectionAttribute)#2 (0) { } [1]=> object(ReflectionAttribute)#3 (0) { } [2]=> object(ReflectionAttribute)#4 (0) { } [3]=> object(ReflectionAttribute)#5 (0) { } } Error: Cannot instantiate enum DemoEnum Error: Cannot instantiate trait DemoTrait Error: Cannot instantiate abstract class DemoAbstract Error: Cannot instantiate interface DemoInterface

preferences:
55.93 ms | 409 KiB | 5 Q