Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: html в переменной
Форумы портала PHP.SU » » Вопросы новичков » html в переменной

Страниц (1): [1]
 

1. darl - 05 Ноября, 2013 - 20:01:46 - перейти к сообщению
Доброе время суток, подскажите пожалуйста, у меня сложная логика построений html таблицы и я решил таблицу конкатенацией собирать в переменной и в конце ее вывести через echo. Все работает, но сомнения не покидают в правильности реализации, т.к. таблица у меня может быть не маленькой соответственно и переменная будет иметь не малый размер, не отразится ли это в производительности или вообще верное решение?
2. biperch - 05 Ноября, 2013 - 20:35:09 - перейти к сообщению
правильно. все в переменную и один раз выводишь. частый вывод в stdout тормозит так что ты правильно делаешь.
3. DelphinPRO - 05 Ноября, 2013 - 20:39:04 - перейти к сообщению
хм, я вообще всю страницу в переменную собираю, потом вывожу. Правильно ли я делаю? хз, но проблем не было.
4. darl - 06 Ноября, 2013 - 03:34:09 - перейти к сообщению
спасибо! успокоили.
5. deblogger - 06 Ноября, 2013 - 09:03:02 - перейти к сообщению
Собирайте в массив. Массив сделайте объектом с методами которые сами в него будут все добавлять. В финале echo выведет на волшебный __toString() из которого вы все и вывалите обычным return join(PHP_EOL, get_object_vars($this));
6. darl - 06 Ноября, 2013 - 09:29:39 - перейти к сообщению
deblogger пишет:
Собирайте в массив. Массив сделайте объектом с методами которые сами в него будут все добавлять. В финале echo выведет на волшебный __toString() из которого вы все и вывалите обычным return join(PHP_EOL, get_object_vars($this));

Немного не понял, можно кратко написать этот объект, как понять "Массив сделайте объектом с методами" это в объекте создать массив и потом сеттером вставлять или преобразовать массив в объект (object)array()?
А в чем выигрыш вашего метода?
7. deblogger - 06 Ноября, 2013 - 09:33:28 - перейти к сообщению
Писанины меньше и от структуры хтмля отвязаны. Можете сделать body, потом tfoot, затем thead и наконец собрав инфу про таблицу запихать ее в caption. А на выводе все будет как w3c.org хочет.
(Добавление)
Кстати, таблица любой размерности из результата запроса рендерится вот такой процедурой


PHP:
скопировать код в буфер обмена
  1. function echotable($result) {
  2.         echo '<table><tr style="font-weight:bold">';
  3.         while($field = $result->fetch_field()) echo '<td>' . $field->name;
  4.         while($row = $result->fetch_row()) echo '<tr><td>' . implode('<td>', $row);
  5.         echo '</table>';
  6. }

(Добавление)
Нет, про отвязку я конечно перебрал, потребуется класс посложнее. В рубрике про ООП говорят что подключить целиком класс построения DOM'а очень даже ничего. Я, конечно, сомневаюсь. Загляните в нее, там как раз про отрисовку таблицы тема есть.
8. LIME - 06 Ноября, 2013 - 10:19:15 - перейти к сообщению
DelphinPRO пишет:
хм, я вообще всю страницу в переменную собираю, потом вывожу.
насколько помню ты говорил что как раз наоборот))
если надо то буферизацию применяешь а так в виде
не?)
9. deblogger - 06 Ноября, 2013 - 14:25:27 - перейти к сообщению
Аналогичное обсуждение возникло и в упомянутой рубрике. Я предложил эмпирический способ оценки потребности в генераторах хтмля: если данных больше чем тегов - теги надо генерить и подставлять в данные. Если тегов больше чем данных - данные надо генерить и подставлять в теги. По-моему вполне объяснимо и логично.

Если середина-наполовину, значит вы работаете без паттерна.
10. DelphinPRO - 06 Ноября, 2013 - 15:12:38 - перейти к сообщению
LIME, да.
Шаблоны пишу так как ты показал. Но один фиг весь шаблон инклудится между вызовами функций управления буферизацией и попадает в переменную. Это из-за того, чтобы иметь возможность использовать вложенные подшаблоны, и вместе с тем управлять всем этим хозяйством одним и тем же классом шаблонизации.

 

Powered by ExBB FM 1.0 RC1