- Автор темы
- #1
Здравствуйте, собственно может быть кто то сталкивался, гугления и хабрления особо ник чему толковому не привели, кроме нескольких библиотек на гитхабе, которые работают ну очень медленно, жрут ну очень много памяти, и уже давно не обновлялись. Работают на основе PHP токинайзера.
Задача сделать шаблонизатор с PHP подобной логикой, но при этом безопасный для самого сайта (в случае если злоумышленник как то попадёт в админку, и вставит в шаблон опасные функции).
Стадии работы:
- Загружаем шаблон (из файла или переменной)
- Проверяем сгенерированный PHP кеш
- Если кеш есть, исполняем
- Если кеша нет, запускаем парсер синтаксиса для преобразования в PHP код
(Вот на данном момент после преобразования нужно проверить что бы в сформированном PHP коде не было недоступных функций, которые втихоря сольют куда надо конфиги и всё что угодно)
- Исполняем готовый PHP код
- Пишем результат в перменную
Собственно сам .tpl файл представляет из себя подобие PHP кода и в какой то мере напоминает шаблонизатор uCoz (но более функциональный), аля:
<?if($USER_ID$ == 1)?>
Вы пользователь №1
<?elseif($USER_ID$ == 2)?>
Вы пользователь №2
<?elseif($USER_ID$ == 3)?>
Вы пользователь №2
<?else?>
Вы неизвестный пользователь
<?endif?>
Подключается через include, вывод захватывается в буфер и возвращается в переменную которая содержит отработанный шаблон (с учётом установленных для него переменных и условных операторов).
Ещё бы не плохо ловить синтаксические ошибки и не вываливать их в вывод.
Может у кого то есть идеи по реализации?
*На текущий момент есть рабочая версия, но не решены вопросы с фильтрацией функций шаблона, а так же с захватом ошибок синтаксиса.*
PS: Рассматривал Smarty, но там слишком много функционала + некоторые нужные мне вещи придётся реализовывать на костылях храмого PHP. Да и после проведённых тестов он оказался этак помедленней своего собственного варианта.
PS2: Думаю Горбуша может что то подсказать тут...
PS3: Никто не в курсе, PHP OPcache кеширует ОП-код только в .php файлах, или в любых других которые обрабатываются php? т.е. играет ли роль расширение файла?
Задача сделать шаблонизатор с PHP подобной логикой, но при этом безопасный для самого сайта (в случае если злоумышленник как то попадёт в админку, и вставит в шаблон опасные функции).
Стадии работы:
- Загружаем шаблон (из файла или переменной)
- Проверяем сгенерированный PHP кеш
- Если кеш есть, исполняем
- Если кеша нет, запускаем парсер синтаксиса для преобразования в PHP код
(Вот на данном момент после преобразования нужно проверить что бы в сформированном PHP коде не было недоступных функций, которые втихоря сольют куда надо конфиги и всё что угодно)
- Исполняем готовый PHP код
- Пишем результат в перменную
Собственно сам .tpl файл представляет из себя подобие PHP кода и в какой то мере напоминает шаблонизатор uCoz (но более функциональный), аля:
<?if($USER_ID$ == 1)?>
Вы пользователь №1
<?elseif($USER_ID$ == 2)?>
Вы пользователь №2
<?elseif($USER_ID$ == 3)?>
Вы пользователь №2
<?else?>
Вы неизвестный пользователь
<?endif?>
Подключается через include, вывод захватывается в буфер и возвращается в переменную которая содержит отработанный шаблон (с учётом установленных для него переменных и условных операторов).
Ещё бы не плохо ловить синтаксические ошибки и не вываливать их в вывод.
Может у кого то есть идеи по реализации?
*На текущий момент есть рабочая версия, но не решены вопросы с фильтрацией функций шаблона, а так же с захватом ошибок синтаксиса.*
PS: Рассматривал Smarty, но там слишком много функционала + некоторые нужные мне вещи придётся реализовывать на костылях храмого PHP. Да и после проведённых тестов он оказался этак помедленней своего собственного варианта.
PS2: Думаю Горбуша может что то подсказать тут...
PS3: Никто не в курсе, PHP OPcache кеширует ОП-код только в .php файлах, или в любых других которые обрабатываются php? т.е. играет ли роль расширение файла?
Последнее редактирование: