Similar to symfony Drupal8 annotations are written in php as a comment above a class or a function and contain metadata about a class or a function.
Annotations used by Drupal8’s Plugin
Annotations are only used by the Plugin system in Drupal 8. To help understand better annotation in drupal 8 you have
info.ymal file that tells the information about the module, route ymal files tells drupal about different routes, in menu yaml file you tell/inform drupal which links to add to menu system. Annotations are similar concept for plugins. Some of the plugins types provided by the core are:
1) Blocks (see /src/Plugin/Block/ for many examples)
2) Field formatters, Field widgets (see /src/Plugin/Field/ for many examples)
3) All Views plugins (see /src/Plugin/views/ for many examples)
4) Conditions (used for Block visibility in the core)
5) Migrate source, process & destination plugins
Plugins using annotations are registered in PHP files using the PSR-4 standard, which is followed by Drupal core.
To register your plugin, put a file in a folder relative to your Drupal module root: src/Plugin/$plugin_type/Example.php.
s In order to tell the system that something is a plugin you have to place the following comment right before your class definition (with @Plugin replaced with the particular plugin type):
/** * @Plugin( * * ) */ Annotation Example
An example for a block.
/** * Provides a 'Welcome' Block * * @Block( * id = "welcome_block", * admin_label = "Welcome block", * ) */
Block manager scans files looking for @Block annotation tag to find block instances.
The @Block annotation ensures that the block manager discovers this custom block and makes it available to be added to a region. The id of welcome_block is the machine name and the admin_label (Hello block) will appear in the block interface’s list of blocks.