holyshared / attribute
Hack的属性
0.1.1
2015-10-03 15:57 UTC
Requires
- hhvm: >=3.6.0
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-15 15:39:30 UTC
README
Hack的属性
ClassAttribute
<?hh //strict namespace example; use attribute\ClassAttribute; final class Tag extends ClassAttribute { public function __construct( private string $name ) { } public function value() : string { return $this->name; } }
<?hh //strict namespace example; <<Tag('important')>> class TaggedTarget { }
<?hh //strict namespace example; $attribute = Tag::findByClassName(TaggedTarget::class); var_dump($attribute->value()); // Tag attribute instance $attribute = Tag::findByClass(new ReflectionClass(TaggedTarget::class)); var_dump($attribute->value()); // Tag attribute instance
MethodAttribute
<?hh //strict namespace example; use attribute\MethodAttribute; final class Tag extends MethodAttribute { public function __construct( private string $name ) { } public function value() : string { return $this->name; } }
<?hh //strict namespace example; class TaggedTarget { public function __construct( private string $name ) { } <<Tag('important')>> public function getName() : string { return $this->name; } }
<?hh //strict namespace example; $attributes = Tag::findByClassName(TaggedTarget::class); var_dump($attributes->at('getName')->value()); // important $attributes = Tag::findByClass(new ReflectionClass(TaggedTarget::class)); var_dump($attributes->at('getName')->value()); // important $attribute = Tag::findByMethod(new ReflectionMethod(TaggedTarget::class, 'getName')); var_dump($attribute->value()); // important
运行测试
composer install
composer test