Как мы можем отделить логику от презентации без использования механизма шаблонов (традиционный php-not OOP). Спасибо заранее.
Почему бы не использовать PHP как механизм шаблонов? Он используется в коде, который я опубликовал для вашего другого вопроса. Ваша программа должна быть разделена на 2 основных раздела: получение данных и отображение данных.
Каждая страница должна иметь собственный шаблон. В опубликованном мной коде есть 2 очень простых шаблона, form.php
и list.php
просто расширьте его всем шаблоном сайта, и вы сделали!
Вот немного более сложный пример шаблона PHP:
<table border="0" cellpadding="2" cellspacing="0" width="600"> <? foreach ($data as $row): ?> <tr bgcolor="#666699"> <td align=left> <font color="white"><b><?=$row['name']?></b></font> </td> <td align=right><font color="white"> <?=$row['date'] ?> </font></td> </tr> <tr bgcolor="f0f0f0"> <td colspan=2><?=$row['body'] ?></td> </tr> <? if ($row['answer']): ?> <tr bgcolor="d3d3d3"> <td colspan=2 valign="top"> <table border="0" cellpadding="0" cellspacing="5"> <tr> <td valign="top"><b>Answer: </b></td> <td><?=$row['answer'] ?></td> </tr> </table> </td> </tr> <? endif ?> <? if($admin): ?> <tr> <td colspan=2> <font size=-1> <?=$row['id']?> - <?=$row['ip']?> - <?=$row['topic']?> <? if($row['del']): ?> <a href="/gb/?action=show&id=<?=$row['id']?>">show</a> <? else: ?> <a href="/gb/?action=hide&id=<?=$row['id']?>">hide</a> <? endif ?> <a href="/gb/?action=edit&id=<?=$row['id']?>">edit</a> </font> </td> </tr> <? endif ?> <? endforeach ?> </table>
И это называется так
<? //some code to get data include 'tpl_top.php'; include 'tpl_list.php'; include 'tpl_bottom.php'; ?>
Выглядит великолепно для меня!
Не знаю, если это то, о чем вы просите 🙂
Сам PHP может использоваться как механизм шаблонов. Просто поставьте всю свою логику, прежде чем выводить что-нибудь. Проще говоря:
echo
и foreach
для вывода данных, которые вы помещаете в переменные на шаге 2.