biurad / annotations
Library for managing all your PHP attributes/annotations with ease
Fund package maintenance!
Patreon
biurad.com/sponsor
Installs: 4 461
Dependents: 5
Suggesters: 5
Security: 0
Stars: 3
Watchers: 4
Forks: 0
Open Issues: 0
Requires
- php: ^7.2 || ^8.0
- symfony/polyfill-php80: ^1.22
Requires (Dev)
- doctrine/annotations: ^1.11
- phpstan/phpstan: ^1.0
- phpunit/phpunit: ^8.5 || ^9.5
- spiral/attributes: ^2.8
- squizlabs/php_codesniffer: ^3.6
- vimeo/psalm: ^4.7
Suggests
- doctrine/annotations: ^1.8 for Doctrine metadata driver support
- spiral/attributes: For loading doctrine and/or PHP 8 attributes for PHP 7
README
The Poakium Annotations
A lightweight PHP library providing simple, fast, and easy use of Doctrine Annotations and Attributes support for your PHP projects.
This can help to improve code organization, reduce the risk of errors, and make it easier to maintain and update code over time. From PHP 7.2 to 7.4 projects requires installing spiral/attributes
.
📦 Installation
This project requires PHP 7.2 or higher. The recommended way to install, is by using Composer. Simply run:
$ composer require biurad/annotations
📍 Quick Start
This library acts as a manager enabling you use all your annotations/attributes in one place. Add all resources you want fetch annotations/attributes from using the resource()
method. Then add your listener(s) which will listeners to your annotated/attributed implementation. Use the load()
method when you want to use the returned result of a specific listener. (NB: Listeners can be named).
Here is an example of how to use the library:
use Biurad\Annotations\AnnotationLoader; use Spiral\Attributes\AnnotationReader; use Spiral\Attributes\AttributeReader; use Spiral\Attributes\Composite\MergeReader; // The doctrine annotation reader requires doctrine/annotations library $doctrine = new AnnotationReader(); // With spiral/attributes library, we can use PHP 8 attributes in PHP 7.2 + $attribute = new AttributeReader(); // Create a new annotation loader from readers ... $annotation = new AnnotationLoader(new MergeReader([$doctrine, $attribute])); $annotation->listener(...); // Add your implemented Annotation listeners $annotation->resource(...); // Add a class/function string, class file, or directory $listeners = $annotation->load(); // Compile once, then load cached ... // To use a collector you implemented into your instance of `Biurad\Annotations\ListenerInterface` foreach ($listeners as $collector) { // You can fetch the required $collector from here. }
NB: If you are on PHP 8 and wishes to use attributes only, please avoid using
spiral/attributes
package for best performance, contributing to why this library was not shipped withspiral/attributes
package.
📓 Documentation
In-depth documentation on how to use this library can be found at docs.biurad.com. It is also recommended to browse through unit tests in the tests directory.
🙌 Sponsors
If this library made it into your project, or you interested in supporting us, please consider donating to support future development.
👥 Credits & Acknowledgements
- Divine Niiquaye Ibok is the author this library.
- All Contributors who contributed to this project.
📄 License
Poakium Annotations is completely free and released under the BSD 3 License.