Если тебе очень хочется написать свой шаблонизатор, пиши так, чтобы из _всего_ шаблона получилась готовая строка с готовым к исполнению php-кодом, которому надо один раз сделать eval.
Это я сразу после написания костыля прикрыл) Так и знал, что Вы это скажете.
phpinfo() - мощная вещь, да и, если в сессию что-нибудь запишут, тоже не очень весело будет. Не люблю eval(). Никогда его не использовал, но тут пришлось.
Чтоб было проще отлаживать такие шаблоны, лучше не эвалить, а инклудить откомпилированные версии, со своим Stream Wrapper. Таким образом можно будет видеть нормальные сообщения об ошибках с номером строки, в которой она произошла.