В това уроче, ще видим как можем да си направим проста схема за темплейтизация която поддържа парсване на цикли и променливи.
Първо предполагаме, че такова чудо ни е нужно за да отделим бизнес логиката на нашето приложение от графиката.
Имаме следната постановка на задачата:
Данни
Нека предположим, че от някъква база данни сме изкопали едно кило народ със своите особени белези: пол, ръст, сексуална ориентация, години и прочее.
Без да се интересуваме как сме го направили, ще предположим че предварително сме натикали тези данни в следния асоциативен масив:
$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>