Целесообразность использование буферизации вывода ob_start() в скрипте

Фанат

oncle terrible
Команда форума
Но мне важно как это делается без других шаблонизаторов в PHP/
Абсолютно одинаково. выбор шаблонизатора никак не влияет на структуру приложения.
 

WMix

герр M:)ller
Партнер клуба
Нет, он нужен. Но должен выть вызван перед шаблоном.
чтоб правильно обработать модель и контроллер, поймать исключения, но при этом не показать ни единой строчки, нужно включить ob_start перед контроллером.

в визуализацие же ob_start не требуется если конечноже не используется include + layout.. или другими словами если после обработки view вывод нужно впихнуть еще куданить дальше...

мой совет был не использовать ob_start пока в этом нет необходимости! но при этом я сказал, что порою без него не обойтись!
 

alex_0086

Новичок
Ты можешь объяснить, почему тебе надо обязательно сохранять результат работы zakazy_list.php в переменную?
почему ты не можешь просто этот файл инклюдить вместо <?=$rezult?>?
1. Файл list.php получает список заказов, список клиентов все это хранится в двумерный массив (например $client_list) помимо этого я переменной.
2. Этот файл подключает шаблон списка заказов zakazy_list.php. В этом файле через foreach () {} я перебираю массив $client_list. Далее создаются ссылки. В этом списке определяется тип заказа срочный, просроченный и т.д. И в итоге получается таблица со списком заказов.
3. Все это сохраняется в переменной которая возврашает функция $rezult = $component->show ("list");
4. Далее переменная $rezult обрабатывается функцией plugin_parse ($rezult) (напримет [COMMENT_COUN]) функция плагина заменит на количество комментариев.
5. В шаблоне сайта <?=$rezult?>
и текст выводится в браузер.
 

alex_0086

Новичок
чтоб правильно обработать модель и контроллер, поймать исключения, но при этом не показать ни единой строчки, нужно включить ob_start перед контроллером.

в визуализацие же ob_start не требуется если конечноже не используется include + layout.. или другими словами если после обработки view вывод нужно впихнуть еще куданить дальше...

мой совет был не использовать ob_start пока в этом нет необходимости! но при этом я сказал, что порою без него не обойтись!
Вот вот именно эта ситуация. Тут мне кажется без него уже никак. А будет и это скажем большой нагрузкой для движка интернет магазина. Не будет ли ob_start тормозить сервер?
 

fixxxer

К.О.
Партнер клуба
Я понимаю, зачем делать ob_start вокруг $Template->display() (хотя, скорее - внутри оного). А остальное зачем?
 

alex_0086

Новичок
Я понимаю, зачем делать ob_start вокруг $Template->display() (хотя, скорее - внутри оного). А остальное зачем?
Я использую в 2-х местах ob_start:
1. при получении результата работы скрипта компонента
2. при подключении шаблона
Почему при подключении шаблона? в файле шаблона можно прописать <head><==head==></head> и в шаблон вставятся все стили, java скрипты, заголовок и т.д. и + еще я делаю парсинг через плагин например если в шаблоне написать [comment+coun] то в этом месте шаблона он вставит количество комментариев.
 

Absinthe

жожо
fixxxer про это и говорится, но топикстартер еще не догадался, что нужно оборачивать.

1. Файл list.php получает список заказов, список клиентов все это хранится в двумерный массив (например $client_list) помимо этого я переменной.
2. Этот файл подключает шаблон списка заказов zakazy_list.php. В этом файле через foreach () {} я перебираю массив $client_list. Далее создаются ссылки. В этом списке определяется тип заказа срочный, просроченный и т.д. И в итоге получается таблица со списком заказов.
3. Все это сохраняется в переменной которая возврашает функция $rezult = $component->show ("list");
4. Далее переменная $rezult обрабатывается функцией plugin_parse ($rezult) (напримет [COMMENT_COUN]) функция плагина заменит на количество комментариев.
5. В шаблоне сайта <?=$rezult?>
и текст выводится в браузер.
Есть классическое очевидное решение: взять данные, подставить, вернуть. Полученное в главный шаблон.
Это же гораздо проще.

Не будет ли ob_start тормозить сервер?
нет.
 

Фанат

oncle terrible
Команда форума
4. Далее переменная $rezult обрабатывается функцией plugin_parse ($rezult) (напримет [COMMENT_COUN]) функция плагина заменит на количество комментариев.
Вот с этого и надо было начинать. Это, как я понимаю, единственная причина, по которой используется буфферинг?
 

Фанат

oncle terrible
Команда форума
1. при получении результата работы скрипта компонента
2. при подключении шаблона
Почему при подключении шаблона? в файле шаблона можно прописать <head><==head==></head> и в шаблон вставятся все стили, java скрипты, заголовок и т.д. и + еще я делаю парсинг через плагин например если в шаблоне написать [comment+coun] то в этом месте шаблона он вставит количество комментариев.
почему это делается 2 раза, а не один?
почему синтаксис не единообразный?
 

WMix

герр M:)ller
Партнер клуба
не ругайте меня...я подумал и понимаю что нормально я отлавливаю все ошибки и исключения,
и я понимаю что есть std_out и std_error, .. и незнаю откуда в моей голове такое... както сложилось так, ...

пусть будет мой ответ таким....

чтоб молодые программисты, даже не пытались в контроллере делать вывод! воть!

Absinthe и Фанат вы всеравно классные !
 

Фанат

oncle terrible
Команда форума
WMix
какая разница - отлавливаешь ты их, или нет?
настройки отображения должны быть такими, что никакая ошибка не должна попадать в браузер. безотносительно к тому,перехватываешь ты их, или нет.
ошибки бывают такие, которые перехватить невозможно. это не повод все равно их вываливать на экран.
 

WMix

герр M:)ller
Партнер клуба
Фанат
я про контроллер,
ошибки бывают такие, которые перехватить невозможно -- я пытался вспомнить хотяб одну! отвечая на твой вопрос "а откуда эти строчки могут взяться? можно пример?"
как раз по этой причине, я предлагал забрать все что выдает контроллер с помощью ob_start()...
 

Фанат

oncle terrible
Команда форума
Да ob_start() от parse error тоже не поможет.

Настройки РНР должны отвечать за то, чтобы ошибки не выводились куда не надо. А не выкрутасы с кодом.
 
Сверху