Maslosoft Addendum Logo Maslosoft Addendum Documentation
Easy to use php annotations

Edit

Annotating Classes

The annotation are special kinds of PHPDoc documentation parts, which can be interpreted later to obtain extra information about class, it's methods and properties.

To annotate class add special documentation value. This value can also take arguments based in particular annotation implementation. As each of @AnnotationName blocks will load corresponding class and set it's parameters.

Each class with annotations must implement AnnotatedInterface. This interface is empty, it is information that the class should be parsed by annotation engine.

Example of annotating class

namespace Acme\Components;

use Maslosoft\Addendum\Interfaces\AnnotatedInterface;

/**
 * @Label('My Component')
 */
class MyComponent implements AnnotatedInterface
{
}

Having @Label placed on MyComponent will allow annotations engine to create instance of LabelAnnotation and set it's value to Component.

Obtaining data

To obtain pre-processed value of annotation the preferred way is to use Meta container, which will return object containing metadata.

Meta container is designed to be very lightweight. Once data is cached, it will perform like normal PHP code.

In this example, we assume that @Label will simply set label property of Meta:

$meta = Meta::create(MyComponent::class)

The value of $meta is instance of Meta; To get data for class, we need to call type() method which will return instance of - yes You guessed it - MetaType.

This object contains our label value:

echo $meta->type()->label; //My Component

Will output My Component.

See also this repository and blog post for extra details.