Механизм шаблонов циклов PHP - с нуля

Для группового проекта я пытаюсь создать механизм шаблонов для PHP для менее опытных людей с языком могут использовать теги типа {name} в своем HTML, и PHP заменит этот тег предопределенной переменной из массива. Так же, как и поддерживающие циклы.

Это намного превосходит ожидания проекта, но, поскольку у меня есть опыт работы с PHP, я подумал, что было бы неплохо занять меня!

Мои основные вопросы: как мне сделать часть цикла синтаксического анализатора, и это лучший способ реализовать такую ​​систему. Прежде чем вы просто порекомендуете существующую систему шаблонов, я бы предпочел создать ее сам для опыта и потому, что все в нашем проекте должно быть нашим собственным.

На данный момент базовый синтаксический анализ выполняется с помощью regex и preg_replace_callback, он проверяет, не $ данные [имя] существуют и заменяют их.

Я пробовал выполнить цикл разными способами, но не уверен, что нахожусь на правильном пути!

Пример, если данные анализатор было дано:

Array
(
    [title] => The Title
    [subtitle] => Subtitle
    [footer] => Foot
    [people] => Array
        (
            [0] => Array
                (
                    [name] => Steve
                    [surname] => Johnson
                )

            [1] => Array
                (
                    [name] => James
                    [surname] => Johnson
                )

            [2] => Array
                (
                    [name] => josh
                    [surname] => Smith
                )

        )

    [page] => Home
)

И страница, которую он анализировал, выглядела примерно так:

<html>
<title>{title}</title>
<body>
<h1>{subtitle}</h1>
{LOOP:people}
<b>{name}</b> {surname}<br />
{ENDLOOP:people}
<br /><br />
<i>{footer}</i>
</body>
</html>

Результат был примерно таким:

<html>
<title>The Title</title>
<body>
<h1>Subtitle</h1>
<b>Steve</b> Johnson<br />
<b>James</b> Johnson<br />
<b>Josh</b> Smith<br />
<br /><br />
<i>Foot</i>
</body>
</html>

Ваше время невероятно ценится с этим!

Большое спасибо,

Ps Я полностью не согласен с тем, что, поскольку я хочу создать что-то похожее на то, что уже существует для опыта, мой хорошо отформатированный и простой для понимания вопрос получил голосование.

Pps Похоже, существует огромный разброс мнений по этой теме, пожалуйста, не Не голосуйте против людей, потому что они имеют другое мнение, чем вы. Каждый имеет право на свое!

16
задан Pez Cuckow 16 February 2011 в 16:36
поделиться