Чем атрибуты PHP отличаются от аннотаций блока c? - PullRequest
2 голосов
/ 27 апреля 2020

В последнее время атрибуты RF C прошли этап голосования. Чем они отличаются от аннотаций DocBlock и какие преимущества они принесут?

Рассмотрим простую Doctrine сущность до:

/**
 * @ORM\Entity
 */
class Entity {
    …
}

После:

<<ORM\Entity>>
class Entity {
    …
}

1 Ответ

2 голосов
/ 06 мая 2020

Объяснение в этой части РФ C: Почему бы не продлить Do c Комментарии? объясняет множество преимуществ

  • Пространство имен предотвращает конфликты между различными библиотеки, использующие тот же тег do c comment
  • Проверка наличия атрибута - это проверка ключа O (1) ha sh по сравнению с непредсказуемой производительностью strstr или даже анализом docblock.
  • Mapping Атрибуты к классам обеспечивают правильную типизацию атрибутов, уменьшая основной источник ошибок, зависящих от docblocks во время выполнения.
  • Существует заметный спрос на что-то вроде аннотаций, основанное на его общем использовании в очень многих различных инструментах и ​​сообществах. Тем не менее, это всегда будет запутанным для новичков, чтобы увидеть в комментариях. Кроме того, разница между / * и / ** все еще является очень тонким источником ошибок.

Многие из них сводятся к тому, что атрибуты могут быть проверены с помощью PHP. Инструменты могут использовать тот факт, что эти атрибуты - это уже проанализированные метаданные, видимые с отражением, а не комментарии, которые необходимо анализировать с помощью специального синтаксиса для каждого инструмента. Среды IDE и инструменты анализа stati c смогут гарантировать правильность, не зная синтаксиса аннотации docblock конкретного инструмента c, поскольку атрибуты разрешают классы, которые должны существовать, и могут иметь дополнительные аннотации типов для добавления проверки.

Итак:

  • инструменты, определяющие используемые ими атрибуты, выиграют от корректности и прироста производительности, поскольку PHP будет обрабатывать эти атрибуты для них
  • инструменты, которые анализируют PHP получат преимущества от более простых гарантий проверки типов и стандартов проверки правильности атрибутов
  • люди получат преимущества от улучшений этих инструментов и того факта, что документация и метаданные могут быть лучше разделены
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...