PHP - статьи

         

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


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

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

    $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) {




    Содержание  Назад  Вперед






    Forekc.ru
    Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий