Посмотрим лог изменений:

  • Добавлена функция first().
  • Добавлена функция optional().
  • Добавлена функция html_attributes().
  • Расширены возможности функций css() и script().

Функция first()

Основное предназначение этой функции — вернуть первый существующий (not null) из переданных аргументов. Т.е. передаёте несколько аргументов и функция по очереди их проверит. А последним можно передать значение по-умолчанию.

Функция optional()

Данная функция появилась в Laravel 5.5. Она помогает избежать ошибки обращения к свойству или методу несуществующего объекта или ключу несуществующего массива. Почему бы её не использовать во благо и в MODX.

$nullObj = null;
// Ошибка
echo $nullObj->property;    // Trying to get property of non-object
// Использование функции optional помогает избежать данной ошибки
echo optional($nullObj)->property; // Выведет null

Функция html_attributes()

Эта функция преобразует переданный массив аргументов HTML тега в строку определённого формата. Она в полной мере используется в функциях css() и script().

html_attributes(['async', 'id' => 'id']);  // async id="id"

Новые возможности функций css() и script()

Главная доработка — возможность передать аттрибуты HTML соответствующего элемента в массиве или строке.

css('/path/to/styles.css', ['media' => 'print']); // <css src="/path/to/styles.css" media="print" rel="stylesheet"></script>
css('/path/to/styles.css', ['media' => 'print', 'rel' => 'alternate']); // <css src="/path/to/styles.css" media="print" rel="alternate"></script>

# Регистрация перед тегом <body>
script('/path/to/script.js', 'async'); // <script async src="/path/to/script.js"></script>
# Регистрация в секции <head>. Аргументы передаются третьим параметром
script('/path/to/script.js', true, ['async', 'defer', 'id'=>'some-id', class="some classes"]); 
// <script async defer id="some-id" class="some classes" src="/path/to/script.js"></script>

Также у этих двух тегов (link и script) убраны аттрибуты type. Если он вам нужен, придётся добавлять его самостоятельно.

02 апреля 2018, 17:04   211     3

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

  1. Семён 03 апреля 2018, 08:26 # +1
    Ништяковые доработки! Спасибо, Сергей.
    Особенно порадовала функция optional — я частенько в логах вижу ошибку чтения свойства у несуществующего объекта.
    1. Семён 13 апреля 2018, 16:40 # 0
      Сергей, приветствую.
      Обратил внимание, что при обращении к классу Object.php, находящимся в папке modhelpers/classess
      Вылетает фатальная ошибка
      Fatal error: Cannot use 'Object' as class name as it is reserved in…
      Такую ошибку постоянно ловлю при использовании функций: resource() или object() в посредниках
      Конфигурация на которой была замечена ошибка: PHP 7.2 и MySQL 5.7 и MODX 2.6.2
      1. Сергей Шлоков 13 апреля 2018, 16:54 # 0
        Ага. В 7.2 появилось это ограничение. Спасибо. В ближайшее время выпущу исправление.

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

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