Oпростена схема за темплейтизация.
Публикувана от ko6rata на January 19 2011 10:39:32

Разширена новина
В това уроче, ще видим как можем да си направим проста схема за темплейтизация която поддържа парсване на цикли и променливи.

Първо предполагаме, че такова чудо ни е нужно за да отделим бизнес логиката на нашето приложение от графиката.
Имаме следната постановка на задачата:

Имаме данни с които трябва да напълним шаблона.
Разполагаме със темплейт (шаблон) написан на HTML.
Имаме една две функции които вършат цялата работа.

Данни

Нека предположим, че от някъква база данни сме изкопали едно кило народ със своите особени белези: пол, ръст, сексуална ориентация, години и прочее.
Без да се интересуваме как сме го направили, ще предположим че предварително сме натикали тези данни в следния асоциативен масив:

$PARSE_ARRAY['people'][0]['NAME'] = "Пенчо Щръмбалски";
$PARSE_ARRAY['people'][0]['TALL'] = "179";
$PARSE_ARRAY['people'][0]['SEX_ORIENT'] = "нормален";
$PARSE_ARRAY['people'][0]['AGE'] = "79";

$PARSE_ARRAY['people'][1]['NAME'] = "Гинка Лшникова";
$PARSE_ARRAY['people'][1]['TALL'] = "160";
$PARSE_ARRAY['people'][1]['SEX_ORIENT'] = "неизвестна";
$PARSE_ARRAY['people'][1]['AGE'] = "16";

$PARSE_ARRAY['people'][2]['NAME'] = "Магдалена Чумбюшликова";
$PARSE_ARRAY['people'][2]['TALL'] = "170";
$PARSE_ARRAY['people'][2]['SEX_ORIENT'] = "малийй";
$PARSE_ARRAY['people'][2]['AGE'] = "20";

............

$PARSE_ARRAY['people'][137]['NAME'] = "Лакто Марселски";
$PARSE_ARRAY['people'][137]['TALL'] = "190";
$PARSE_ARRAY['people'][137]['SEX_ORIENT'] = "абсолютен гей";
$PARSE_ARRAY['people'][137]['AGE'] = "28";


Освен това някак сме сметнали колко е общия брой на хората и сме го записали отново като елемент от този масив:

$PARSE_ARRAY['TOTAL_COUNT'] = "138";


Темплейт

Ще поискаме нашия шаблон (нека да го наречем template.html) да визуализира една най обикновена табличка с редове, в които са нанесени стойностите дискутирани по-горе.
Нека специалните таговe в нашия шаблон бъдат следните
<?VARIABLE?> - предназначен за извличане на стойност от "променливата" VARIABLE
и
<?loop lpID>
...
<lpID loop?>
- което е по скоро конструкция дефинираща цикъла, чрез който ще извъртим редовете на таблицата.

Нека нашия темплейт изглежда така:

<table border="0" width="100%">
<tbody>
<tr>
<td>Имена</td>
<td>Ръст</td>
<td>Сексуалистика</td>
<td>Години</td>
</tr>
<?loop people>
<tr>
<td><?NAME?></td>
<td><?TALL?></td>
<td><?SEX_ORIENT?></td>
<td><?AGE?></td>
</tr>
</tbody>
</table>