thenlabs/meta-parser

dev-main 2022-07-25 12:26 UTC

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