Очень часто в Joomla мы видим, что данные приходят не в виде массива или простого объекта (stdClass
), а их нужно получать с помощью метода get()
. Например, в плагине или модуле:
$option = $this->params->get('my_option');
Это означает, что мы получили данные в виде объекта Joomla\Registry\Registry
. Раньше (в Joomla 2.5, Joomla 3 и ранее) он назывался JRegistry
.
❓ Зачем это? - Возможность указать значение переменной по умолчанию в Joomla.
Лично для меня первое и самое важное - это возможность указать значение переменной по умолчанию, если его (значения) в параметрах нет.
Вы выпускаете новую версию своего мега-плагина и вводите в него новую опцию my_option. Мы используем её везде в PHP коде. Однако, мы же понимаем, что люди обновятся, а обновлять настройки плагина не полезут. Не полезут до тех пор, пока не станет любопытно "а что же там нового?" или что-нибудь не отвалится. И пока они не установят новый параметр и не сохранят настройки плагина - в коде он так и не появится.
Чтобы ничего не отвалилось нам в коде нужно предположить сценарий по умолчанию, которому, соответственно, нужны значения параметров по умолчанию. Вот тут нам и поможет класс Registry
.
$myOption = $this->params->get('my_option', 'default_value_if_null_or_not_exists'); // string по умолчанию
И теперь нам не надо писать свои проверки на наличие переменной и её пустоту, а так же вы всегда уверены, что получите вменяемое значение для работы в коде. По умолчанию можно указать что угодно. Чаще всего это какая-нибудь строка, число, массив.
$myOption = $this->params->get('my_option'); // null, если не найдено
$myOption = $this->params->get('my_option', []); // пустой массив по умолчанию
$myOption = $this->params->get('my_option', 100500); // ставка за час работы по умолчанию ;-)
$myOption = $this->params->get('my_option', 'Joomla'); // движок для работы по умолчанию