Library for managing all your PHP attributes/annotations with ease

v1.1.0 2022-10-08 09:42 UTC


Latest Version Workflow Status Software License Maintenance Status

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 with spiral/attributes package.

📓 Documentation

In-depth documentation on how to use this library can be found at 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

📄 License

Poakium Annotations is completely free and released under the BSD 3 License.