Как использовать функции PHP в плагинах MODX?

Не понимаю почему добавляя функцию в плагин сайт перестает работать, вот код плагина
<?php
/** Функция обрабатывает размер файла в байтах в человекочитаемый 
    формат добавляя к размеру файла размерность, например 128 Mb
*/
function human_filesize($bytes, $decimals = 2) {
  $sz = ['B','Kb','Mb','Gb','Tb','Pb'];
  $factor = floor((strlen($bytes) - 1) / 3);
  return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . ' ' .@$sz[$factor];
}

/** @var modX $modx */
switch ($modx->event->name) {
    case 'pdoToolsOnFenomInit':
        /** @var Fenom $fenom
            Мы получаем переменную $fenom при его первой инициализации и можем вызывать его методы. 
            Например, добавим модификатор вывода имени домена сайта из произвольной ссылки.
        */
        $fenom->addModifier('getFileInfo', function ($input) {
          if (file_exists($input)) {
            return strtoupper(pathinfo($input, PATHINFO_EXTENSION)) . ', ' . human_filesize(filesize($input), 0);
          }
        });
        break;
}
если заккоментировать функцию human_filesize, все работает, если оставить — сайт вылетает в ошибку fenom, может есть какие-то правила добавления функций?
Вячеслав Варов
23 января 2024, 10:53
modx.pro
190
0

Комментарии: 2

Вячеслав Варов
23 января 2024, 10:59
0
а, ошибка в том что функция объявляется несколько раз
    Вячеслав Варов
    23 января 2024, 11:01
    +1
    if (!function_exists('human_filesize')) {
        function human_filesize($bytes, $decimals = 2) {
          $sz = ['B','Kb','Mb','Gb','Tb','Pb'];
          $factor = floor((strlen($bytes) - 1) / 3);
          return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . ' ' .@$sz[$factor];
        }
    }
    Нужно использовать function_exists, может поможет кому)
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      2