thenlabs / meta-parser
dev-main
2022-07-25 12:26 UTC
Requires (Dev)
- doctrine/annotations: ^1.13
- friendsofphp/php-cs-fixer: ^3.2
- thenlabs/pyramidal-tests: 2.0.x-dev
- thenlabs/snapshots-comparator: dev-main
This package is auto-updated.
Last update: 2024-09-25 17:10:38 UTC
README
从属性和/或注释中提取元数据。
如果您喜欢这个项目,请给我们一个 ⭐。
安装。
composer require thenlabs/meta-parser dev-main
使用示例。
/** * @MyMetadata(data1="value1") */ #[MyMetadata(data1: 'value2')] class MyClass { } $myClass = new ReflectionClass(MyClass::class); /** * Reading from annotations only. */ $annotationParser = new ThenLabs\MetaParser\AnnotationParser(); $annotationParserResult = $annotationParser->parse($myClass); $annotationParserResult->get(MyMetadata::class)->get('data1') === 'value1'; // true /** * Reading from attributes only. */ $attributeParser = new ThenLabs\MetaParser\AttributeParser(); $attributeParserResult = $attributeParser->parse($myClass); $attributeParserResult->get(MyMetadata::class)->get('data1') === 'value2'; // true /** * Reading both. */ $parser = new ThenLabs\MetaParser\Parser(); $parserResult = $parser->parse($myClass); // this returns true becouse attributes override annotations. $parserResult->get(MyMetadata::class)->get('data1') === 'value2';
关于 ThenLabs\MetaParser\Parser
类的亮点。
1. 读取注释需要安装 Doctrine Annotations
$ composer require doctrine/annotations
2. 属性解析器需要 PHP 版本大于 8.0。
3. parse()
方法接受一个 Reflector
实例,因此,为了解析一个类的某个方法(例如),您可以使用一个 ReflectionMethod
实例。
开发。
克隆此存储库并安装 Composer 依赖项。
$ composer install
运行测试。
此项目的所有测试都是使用我们的测试框架 PyramidalTests 编写的,该框架基于 PHPUnit。
运行测试
$ composer test