[modHelpers] Версия 3.3.0
Вот что сулит нам очередное обновление:
- Добавлен менеджер сессий.
- Функция
session()
, вызванная без аргументов, теперь возвращает менеджер сессий. - Добавлена функция
dump()
. - Добавлена функция
dd()
. - Добавлена функция
has_parent()
. - Вызов функции
user()
с аргументом true возвращает объект текущего пользоваля. - Вызов функции
resource()
с аргументом true возвращает объект текущего ресурса. - Исправлена ошибка кэширования в функции
snippet()
. - Обновлены библиотеки.
- Переименована системная настройка
modhelpers_responseManager
вmodhelpers_responseManagerClass
.
Менеджер сессий
Менеджер сессий добавляет новые возможности для удобной работы с сессией. Раньше можно было работать с сессией только через параметры функции session(). Сейчас вызов этой функции без агрументов возвращает тот самый менеджер, у которого есть следующие методы:
all()
— возвращает массив $_SESSION.get($key, $default = null, $flat = false)
— возвращает данные из сессии. Параметр$flat
определяет, нужно ли использовать dot нотацию.set($key, $value = null, $flat = false)
— записывает данные в кэш.push($key, $value)
— добавляет данные в массив, хранящийся в сессии.pull($key)
— получает данные и удаляет их из сессии.remove($key)
— удаляет указанный ключ из сессии. Можно указывать массив ключей.clear()
— очищает сессию. Страшная вещь.exists($key)
— проверяет, есть ли указанный ключ в сессии.has($key)
— проверяет, есть ли непустой ключ.flash($key, $value)
— записывает в кэш данные, которые храняться только для одного запроса.count()
— подсчитывает количество ключей в сессии.
Особо хочу остановится на методе flash()
. Это очень удобная вещь для одноразовых (так называемых флеш) сообщений. Т.е. выполнили какое-то действие, сохранили флеш сообщение, которое отобразится только один раз.
# Сниппет или класс if ($success) { session()->flash('message', 'Действие выполнено успешно!'); } ... # Страница/шаблон/чанк {if session()->has('message')} <div class="info">{session('message')}</div> {/if}
Узнать больше про флэш-сообщения можно тут.
Функции отладки
Поработав с Laravel не мог не восхититься функциями dump()
и dd()
, которые незаменимы при отладке кода. Поэтому добавил их и сюда. Основное отличие функции dd()
от dump()
— её можно вызывать только один раз. Она так и расшифровывается «dump and die». Можно дампить и переменные и объекты. Вот как выглядит вызов dump($modx->user)
.
Результат пострящающий. Попробуйте сделать тоже самое через var_dump()
.
Проверка родителей
Это именно то, что делает функция has_parent()
. Она по цепочке проверяет не только текущего родителя, но и всех предков. Это бывает удобно, когда нужно проверить, входит ли текущий ресурс в определённую категорию, которая может быть на несколько уровней выше. Может работать как с текущим ресурсом, так и с указанным. Id ресурса указывается в первом параметре. Для текущего ресурса его можно опустить.
// Проверяет наличие родителя с id 1 у текущего ресурса. if (has_parent(1)) {...} // Проверяет наличие родителя с id 1 у ресурса с id 10. if (has_parent(10, 1)) {...}
Можно проверить наличие нескольких родителей. Для этого нужно указать массив айдишек.
Объекты текущего пользователя и текущего ресурса
Получить любой объект пользователя можно через функцию user()
. Но чтобы получить объект текущего пользователя приходилось изгаляться так: user(user_id())
. Теперь это можно сделать проще: user(true)
. Аналогично работает и функция resource()
.
Заключение
Несколько раз порывался прекратить разработку этой библиотеки по причине небольшой популярности. Но даже имея всего 2 сайта, на которых провожу различные эксперименты, всё равно нахожу какие-то идеи, которые жалко выбросить. Вот и мучаю себя и других частыми обновлениями. Ну и звёздочки на Github немного стимулируют.
Комментарии ()
Вы должны авторизоваться, чтобы оставлять комментарии.
На счёт популярности библиотеки, скорее это связанно с общей популярностью MODX, я, например пользуюсь modHelpers в каждом проекте и знакомым разработчикам рекомендую, тем кто MODX начинает осваивать.
Кстати, сама разработка меня нисколько не напрягает. А вот писать доку к ней