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

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

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

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

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

onContentBeforeDisplay

onBeforeCompileHead

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

onFinderCategoryChangeState

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

onComUsersControllerMethodBeforeAdd

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

Имя класса — принято делать существительным, имя метода — глаголом или глаголом+существительным. Таким образом получаем основную формулу для имени события: 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-разработчикам сделать свой код более читаемым.

@VitaliyNekrasov
19.10.2024 16:17 UTC
Первоисточник

Комментарии

@sergeytolkachyov
19.10.2024 12:47 UTC
-1

Классно! О некоторых вещах не задумываешься почему они сделаны именно так. А логика прослеживается) Спасибо)