Вы здесь

Для чего решили использовать механизм аннотаций при объявлении своей сущности в Drupal 8 ?

0

Добрый день.

Объясните пожалуйста, для чего разработчики решили использовать механизм аннотаций при разработке своих сущностей ?
В частности, смотрю модуль content_entity_example, входящий в состав модуля examples.
И там в файле content_entity_example.routing.yml есть такие строки

entity.content_entity_example_contact.canonical:
  path: '/content_entity_example_contact/{content_entity_example_contact}'
  defaults:
  # Calls the view controller, defined in the annotation of the contact entity
    _entity_view: 'content_entity_example_contact'
...

entity.content_entity_example_contact.collection:
  path: '/content_entity_example_contact/list'
  defaults:
  # Calls the list controller, defined in the annotation of the contact entity.
    _entity_list: 'content_entity_example_contact'

То есть, контроллеры для просмотра списка сущностей и одной сущности следует искать в аннотации, у которой, как я понял, id=content_entity_example_contact (ниже фрагмент аннотации)

* @ContentEntityType(
 *   id = "content_entity_example_contact",
 *   label = @Translation("Contact entity"),
 *   handlers = {
 *     "view_builder" = "Drupal\Core\Entity\EntityViewBuilder",
 *     "list_builder" = "Drupal\content_entity_example\Entity\Controller\ContactListBuilder",
 *     "form" = {
 *       "add" = "Drupal\content_entity_example\Form\ContactForm",
 *       "edit" = "Drupal\content_entity_example\Form\ContactForm",
 *       "delete" = "Drupal\content_entity_example\Form\ContactDeleteForm",

Вот хочется узнать, для чего нужно было так всё усложнять ? Для чего вообще нужны в данном случае эти аннотации ? Неужели PHP-средств в версии 5.6 недостаточно, чтобы обойтись классом, методами внутри класса, внутри которых задать эти хендлеры и т.д. ?

Версия Drupal: 
8.x
Категория: 
Entity API
Связанные проекты: 
Examples for Developers
Вопрос задан 10.12.2016 - 18:13

Ответы

2
  1. Первый (и простой) ответ: так в симфони.
  2. Зачем так в симфони (и в друпале)? Тут неплохой пример https://www.lakshminp.com/annotations-drupal-8 .
  3. Зачем так вообще в php? http://www.slideshare.net/rdohms/annotations-in-php-they-exist/ .

Зачастую позволяет Don't Repeat Yourself, не разделяя код и документацию к нему, http://php.net/manual/en/reflectionclass.getdoccomment.php так например.

Ответ дан 11.12.2016 - 00:25
2

Это якобы экономит время и память на разборку кода компилятором, т.к. прочитать текстовый файл с диска быстрее, чем выполнить его.

https://www.drupal.org/docs/8/api/plugin-api/annotations-based-plugins#w...

Ответ дан 11.12.2016 - 11:39
Аватар пользователя xandeadx
xandeadx
1442

на разборку кода компилятором

Вы имеете в виду, интерпретатором ? Компилятор - это программа, которая один раз делает из исходников исполняемый файл, который после этого уже и вызывается к исполнению.

Комментарий оставлен 11.12.2016 - 12:34