PHP - статьи


Битва со списками или применение классов для вывода списков в PHP - часть 4


Чтобы указать, где в обрамлении списка выводится последовательность его элементов, а также их количество, в классе ListItems предусмотрены дополнительные поля и соответствующие им макросы.

  1. listitems – в этом поле накапливается HTML-вывод по мере перебора элементов списка, а макрос {%%LISTITEMS%%} должен обязательно присутствовать в элементе list шаблона, поскольку он заменяется кодом всего списка.
  2. count – это число элементов списка, а макрос {%%COUNT%%} заменяется значением этого поля.

С учетом вышесказанного, код, задающий шаблон, будет выглядеть так:

$template = array (

'list' => '{%%LISTITEMS%%}', 'empty' => '<p>"Это мир, где нет стран и людей.', 'begin' =>' <p>Население {%%COUNT%%} стран мира.<ul>', 'end' => '</ul>', 'item' => '<li>{%%NAME%%} - {%%POPULATION%%} чел.</li>', 'delimiter' => ' '

);

Теперь приведу код метода объекта ListItems, который вставляет любой объект $o в каждый элемент шаблона $t, закодированного по определённым выше правилам. function InsertObjectToTemplate ($o, $t) {

foreach ($o as $n=>$v) if (gettype ($v)!= 'object' && gettype ($v)!='array') {

$p = '\{%%' . strtoupper ($n) . '%%\}'; if (eregi ($p, $t)) $t = eregi_replace ($p, strval($v), $t);

} return $t;

}

Изменив регулярное выражение в третьей строке кода, вы можете изменить вид макроса в соответствии с принятым на вашем проекте. Например, $p = '\[' . strtoupper ($n) . '\]';

позволит использовать макрос вида [name], а $p = '\{[[:space:]]{0,}' . strtoupper ($n) . '[[:space:]]{0,}\}';

– такой же макрос с фигурными скобками и любым числом пробельных символов между name и скобками. Я использую в своих проектах макросы с возможностью добавления пробельных символов перед и просле name, и эта строка выглядит так: $p = '\{%%[[:space:]]{0,}' . strtoupper ($n) . '[[:space:]]{0,}%%\}';

И последняя функция класса ListItems выводит массив объектов items в шаблон из шести элементов в соответствии со всем вышесказанным. function getOutput ($arg) {




Начало  Назад  Вперед



Книжный магазин