karelwintersky / arris.template
Template class for Arris µ-framework, based on Smarty
Requires
- php: ^7.4 || 8.*
- ext-json: *
- ext-mbstring: *
- karelwintersky/arris.entity: ^0.9.0
- psr/log: *
- smarty/smarty: v4.5.3
README
Используется ленивая инициализация
$t = new \Arris\Presenter\Template(smarty_options: [], template_options: [], logger: null);
smarty_options:
template_options:
file
orsource
- глобальный файл шаблона, устанавливаемый при инициализации (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'}
отрабатывают корректно оба.