#php #drupal #naming-conventions #hook #drupal-hooks
#php #drupal #соглашения об именовании #перехват #drupal-перехваты
Вопрос:
У меня есть пара вопросов по соглашениям о кодировании в Drupal, которые я не смог прояснить из документов или кода.
Помимо знания имени каждого перехвата в Drupal, есть ли способ отличить функцию, которая реализует перехват, от функции, которая просто предоставляет немного функциональности для перехвата? Либо что-то принудительное с помощью кода, либо какое-то соглашение?
Второй, возможно, связанный с этим вопрос. После просмотра основных модулей я заметил, что некоторые функции называются с начальным подчеркиванием
function _node_rankings(SelectQueryExtender $query) {
...
}
Какое значение придается подчеркиванию? Я предполагаю, что это имитирует «защищенное» соглашение, что означает, что его следует вызывать только из других функций в node.module
файле; однако я не смог найти ничего, что подтверждало бы это.
Я знаю о стандартахкодирования, но они, похоже, ориентированы на общий синтаксис PHP, а не на соглашения, предназначенные для внутренних систем Drupal.
Комментарии:
1. На ранних этапах кодирования stardarts это было, я предполагаю, что они удалили соглашение о «подчеркивании» как необычное…
Ответ №1:
Вы правы, префикс подчеркивания в именах функций указывает на то, что ее следует рассматривать как закрытую функцию, вызываемую только модулем, который ее объявил.
Я не знаю, есть ли это в официальных документах Drupal, но есть несколько сообщений о drupal.org подтверждаю это (например, это или this).
РЕДАКТИРОВАТЬ: и да, это также помогает избежать превращения «обычной» функции в реализацию перехвата (хотя вам следует стараться не называть функции в честь существующих перехватов).
Ответ №2:
В ответ на ваш первый вопрос, если вы посмотрите на код большинства модулей, в комментариях выше реализаций перехвата обычно будет сказано:
/**
* Implementation of hook_foo().
*/
Поработав некоторое время с Drupal, вы начнете распознавать наиболее распространенные перехваты.
Комментарии:
1. 1 за информацию. Я видел это, но теперь это всегда присутствует. Я ищу детерминированный способ (который, честно говоря, я не думаю, что существует).
2. Если вы запустите модуль Coder в другом модуле, он сообщит вам, в каких реализациях перехвата отсутствует строка документации, описанная выше: drupal.org/project/coder