Вот что сулит нам очередное обновление:

  • Добавлен менеджер сессий.
  • Функция 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 немного стимулируют.

    05 февраля 2018, 22:37   426     2

    Комментарии ()

    1. Семён 06 февраля 2018, 09:23 # +1
      Приятные новшества, благодарю за работу.
      На счёт популярности библиотеки, скорее это связанно с общей популярностью MODX, я, например пользуюсь modHelpers в каждом проекте и знакомым разработчикам рекомендую, тем кто MODX начинает осваивать.
      1. Сергей Шлоков 06 февраля 2018, 09:52 # 0
        Да я понимаю причину. У меня нет ни к кому претензий. Большинство разработчиков используют MODX как CMS, а не как CMF. Поставили пакеты и сайт готов. А для сервисов выбирают другие фреймворки.

        Кстати, сама разработка меня нисколько не напрягает. А вот писать доку к ней :\

      Вы должны авторизоваться, чтобы оставлять комментарии.

      Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.