Как событие Joomla назовёшь, так оно и триггернётся?

от автора

— Нет! Вы, конечно, можете называть события как угодно и вызывать откуда угодно, но правильно составленные имена событий не будут требовать заучивания, они как будто сами будут печататься на экране.

Как же следует именовать события в своих компонентах? — Так, чтобы они читались как полноценные предложения, а для этого надо разобраться с их структурой.

Обычное предложение состоит из подлежащего, сказуемого и дополнения.

Давайте рассмотрим несколько событий из ядра Joomla:

onContentBeforeDisplay

  • on префикс, с которого в Joomla принято начинать имя события;

  • Content — существительное, является подлежащим в предложении, в компоненте com_content только один тип сущностей (материалы), поэтому для определения существительного достаточно названия компонента;

  • Before — предлог времени, указывающий, что событие происходит до указанного действия;

  • Display — глагол который является сказуемым в предложении.

onBeforeCompileHead

А в событии onBeforeCompileHead нет подлежащего (это нормально для событий ядра Joomla, подразумевается что действие выполняет система). Но в нём есть дополнение:

  • on — префикс;

  • Before — предлог времени;

  • Compile — сказуемое;

  • Head — существительное, является дополнением в преложении, определяет объект, над которым выполнется действие.

onFinderCategoryChangeState

В событии onFinderCategoryChangeState подлежащее состоит из двух слов: имени компонента — Finder и имени сущности — Category.

  • on — префикс;

  • FinderCategory — подлежащее;

  • Before — предлог времени;

  • Compile — сказуемое;

  • Head — существительное, является дополнением в преложении, определяет объект, над которым выполнется действие.

onComUsersControllerMethodBeforeAdd

Ещё один пример читаемого имени для события, встретив такое событие в плагине вам сразу станет понятно где оно вызывается.

  • on — префикс;

  • ComUsersControllerMethod — подлежащее (компонент+конроллер);

  • Before — предлог времени;

  • Add — сказуемое, (метод).

Имя класса — принято делать существительным, имя метода — глаголом или глаголом+существительным. Таким образом получаем основную формулу для имени события: on + Class + Before/After + method .

Отдельно хочу обратить внимание на события, возвращающие результат

Имена некоторых событий, например: onGetStatsData, onApiGetFields… не включают предлог времени (Before/After), но содержат глагол Get, потому что событие вызывается ни до ни после, а вместо действия, с целью получить данные из плагинов.

<?php $result = Factory::getApplication()->triggerEvent('onGetStatsData', ['stats.field.data']);
<?php /** @var OnGetApiFields $eventResult */ $eventResult = Factory::getApplication()->getDispatcher()->dispatch('onApiGetFields', $event);

Надеюсь даные рекомендации помогут начинающим и не очень Joomla-разработчикам сделать свой код более читаемым.


ссылка на оригинал статьи https://habr.com/ru/articles/851886/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *