parser


 

 
   команды управления поиском

Никаких префиксов и постфиксов в шаблонном движке нет...

Sumo 15.09.2016 11:29

Для каждого шаблона делается класс с уникальным именем (math:uid64). Из текста шаблона выкусываются директивы #@import и #@base.

Файлы из директивы import компилируются процессом в текущий класс. После этого в текущий класс компилируются методы шаблона. Одноименные методы затираются. Это аналог partial.

Файлы из директивы base компилируются в отдельный класс с уникальным именем (math:uid64). Этот класс становится предком класса для шаблона. В данном случае одноименные методы не затираются, а лежат в предке и наследнике. Т.е. срабатывает обычное наследование.

Директивы import и base работают рекурсивно, т.е .создается необходимое количество классов-предков для base и импортируются все методы из всех файлов, указанных в import.

В классы заворачиваем исключительно для выделения шаблонам отдельного пространства имен и данных. Из «собранного класса» делаем объект, который и зовем из контролера.

Вот и вся история. Никаких «прототипов» и синглтонов для шаблонов в принципе не нужно, все решается тривиальными средствами ООП. Один и тот же файлик с методами можно совершенно безопасно включать в другие шаблоны, деалать предком и т.п. Фактически для шаблонов получается свое упрощенное ООП с наследованием, только без указания директив CLASS и BASE.

Код шаблонизатора в pf — 400 строк примитивного кода (в pf2 еще меньше — 300). Ну посмотрите наконец на реализацию и не делайте предположений про префиксы, постфиксы и то, что я ну просто обязан использовать прототипы. :)