2010-05-05 6 views
0

Я работала некоторое время на собственных шаблонные движках, но я alwais застревает в strucktured документов какКак я могу сделать свой собственный шаблон/программирование двигатель в PHP

<block : block1> 
    <table> 
     <block : row> 
      <tr> 
       <td> 
        {value} 
       </td> 
       <td> 
        {value2} 
       </td> 
      </tr> 
     </block> 
    </table> 
</block> 

я могу получить «блок 1» с регулярным выражением но он сломается на первой (один из «строки»)

но я хочу умнее путь (а не с помощью функции, как DOM) я думал о чем-то вроде

while($i < strlen($code)){ 
    if(substr($code,$i,1)){ 
     //tag is opened 
    } 
} 
+1

Просто мой 2c, но PHP уже является шаблоном. Если собственных возможностей PHP недостаточно, подумайте о том, чтобы использовать один из многих доступных шаблонов для моделирования (Twig приходит на ум) вместо того, чтобы кататься самостоятельно. Если вам нужно или нужно катиться самостоятельно, DOM или XMLReader были бы самым правдоподобным выбором для того подхода, который вы нам показали. Regex - это просто плохой инструмент для манипулирования узлами. – Gordon

ответ

3

В принципе, вы строите здесь язык программирования (хотя и простой, он все еще является языком программирования). Для того, чтобы интерпретировать язык программирования вам нужен компилятор, который обычно содержит лексера (который расщепляет входной поток на значимые лексемы) и анализатор (который читает лексемы один за другим, и принимает все, что необходимы действия). В упрощенном примере lexer, вероятно, будет основан на regexp, и синтаксический анализатор может быть простым стеклом .

(термины в курсивом должно фактически быть ссылками в Википедии).

0

Я не совсем уверен в вашем вопросе, но было много дискуссий о шаблонах языков на PHP, но я думаю, что общий консенсус, достигнутый к настоящему времени, заключался в том, что, как правило, не имеет смысла перекачивать свои собственные язык шаблонов. Вы можете получить мгновенный хороший результат, например. используя замену строк и регулярные выражения, но в конечном итоге вам понадобится больше функций, таких как циклы или другие выражения, а затем это станет довольно сложным (в конечном итоге заканчивается создание собственного компилятора).

Лучшее предложение обычно является либо использовать PHP в качестве языка шаблонов непосредственно (то есть то, что PHP был разработан в первом месте и строго следуя шаблону MVC довольно хорошее решение, тоже) или попробовать один из существующие шаблонные двигатели. Только если вы не можете сделать ни один из них соответствуют вашим потребностям (большинство из них расширяемы через механизм плагинов) вы должны начать создавать свои собственные.

 Смежные вопросы

  • Нет связанных вопросов^_^