Версия для печати. Взято с сайта phpsql.ru

На главную   Назад   Вперед

То же через классы

Изучаем сценарий подробно

Возможно, вам интересно, что вашу функцию можно легко преобразовать в объектно-ориентированный класс для форматирования таблицы. Вместо объявления функции вам нужно сделать класс с приватной переменной для слежения за состоянием таблицы. Конструктор и деструктор открывают и закрывают теги таблицы (соответственно). Наш класс будет выглядеть так:

class AltTable {
function _construct ()   {
$this->state = 0; print "<table>";
}
function _destruct()   {
print "</table>";
}
function print_row($row)   { if ($this->state & 1)   {
$row_color = "row2"; } else {
$row_color = "rowl";
}
print "<tr class=\"$row_color\">"; foreach  ($row as $value)   { print "<td>$value</td>";
}
print "</tr>"; $this->state++;
}
}
Использовать класс нужно так (мы подразумеваем, что SQL-запрос будет таким же, как и в предыдущем примере):
$mytable = new AltTable;
while($row = mysql_fetch_row($result))   { /* Выводим результаты.  */ $mytable->print_row($row);
}
unset($mytable);
На первый взгляд, использование класса кажется даже более простым - вам не нужно беспокоиться о счетчике, метод print_row () будет обрабатывать любое количество строк, а также вам не нужно выводить HTML-код для открытия и закрытия таблицы. Это, безусловно, удобно, если все ваши HTML-таблицы одинаковые. Все это удобство достигается ценой снижения гибкости и эффективности. Конечно, вы можете добавить новые методы, например для добавления заголовков таблицы, но сначала спросите себя, а стоит ли оно этого?

 
Предыдущая   На главную   Следующая