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: 2025-02-25 17:56:11 UTC
README
Extract metadata from attributes and/or annotations.
If you like this project gift us a ⭐.
Installation.
composer require thenlabs/meta-parser dev-main
Usage example.
/** * @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';
Highlights about ThenLabs\MetaParser\Parser
class.
1. For read annotations it's necessary to install Doctrine Annotations:
$ composer require doctrine/annotations
2. The attribute parser require a PHP version grater than 8.0.
3. The parse()
methods accept an instance of Reflector
, so that, for parse a method of a class(for example), you can use a ReflectionMethod
instance.
Development.
Clone this repository and install the Composer dependencies.
$ composer install
Running the tests.
All the tests of this project was written with our testing framework PyramidalTests wich is based on PHPUnit.
Run tests:
$ composer test