karelwintersky/arris.template

Template class for Arris µ-framework, based on Smarty

0.99.3 2024-11-15 22:21 UTC

This package is auto-updated.

Last update: 2024-12-20 17:24:48 UTC


README

Используется ленивая инициализация

$t = new \Arris\Presenter\Template(smarty_options: [], template_options: [], logger: null);

smarty_options:

template_options:

  • file or source - глобальный файл шаблона, устанавливаемый при инициализации (null);
  • cleanup_extra_eol - убирать ли лишние переводы строк при рендере (true);
  • hook_disable_named_params (false) - отключить ли именованные параметры для хуков?

Отключение именованных параметров для хуков позволяет избежать ошибки вида "Uncaught Error: Unknown named parameter $foo" Она возникнет в PHP8, если запись хука будет вида:

{hook run='pre_content' foo=$foo}

... но в обработчике хука не будет именованного параметра $foo.

Эта ошибка - следствие обратно-несовместимого изменения методов call_user_func* в PHP8: https://dev.to/seongbae/unknown-named-parameter-2gln

(In PHP 7, the keys in $params were ignored. However, in PHP 8, they are not - keys are converted to named parameters.)

Отключение ошибки достигается применением array_values() к списку параметров.

P.S. На самом деле это решается прямым указанием значений по-умолчанию в обработчике хука:

->registerHook('pre_content', function ($foo = 'aaa'){
    return "pre content hook with arg: {$foo}";
})

Тогда

{hook run='pre_content' foo=$foo}
{hook run='pre_content'}

отрабатывают корректно оба.