Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Функции управления выводом - костыль или полезный механизм?
 
 автор: Valick   (04.01.2012 в 13:45)   письмо автору
 
 

Игорь Вячеславович, я лично против ob_start() и объяснил почему, но мой пост был удален (по неизвестной причине которая в соответствии с правилами не обсуждается), ну значит так и останусь наедине со своими мыслями.
может я не прав и ob_start() действительно отличная функция (а не "костыль", в чем я пока безоговорочно уверен)
могли бы вы привести действительно вескую причину использования этой функции?

[поправлено модератором: тема выделена в отдельную из include нарушает механизм работы сессий]

  Ответить  
 
 автор: cheops   (04.01.2012 в 14:43)   письмо автору
 
   для: Valick   (04.01.2012 в 13:45)
 

Хм... не знай, пост скрытый вижу, но тут помоему вообще не про ob_start(), если вы хотите его обсудить, то можно просто новую тему завести (давайте так и сделаем).

Кэширование можно включить на уровне сервера, можно на уровне скрипта - это все штатные возможности. Есть ситуации, когда без него не обойтись, например, когда вам нужно послать в HTTP-заголовке размер файла... я бы функции управления выводом, как "костыль", тем более управление буфером - вещь замечательная и нужная, понятное дело, что применять их следует тогда, когда они действительно требуются. Их наличие не отменяет необходимость в понимании протокола HTTP, но "костылем" бы я их не назвал... самому ими регулярно приходиться пользоваться и должен сказать по делу и по заранее составленному проекту, а не для быстрого исправления ситуации (условие, когда костыли и появляются).

  Ответить  
 
 автор: Valick   (04.01.2012 в 15:00)   письмо автору
 
   для: cheops   (04.01.2012 в 14:43)
 

в том то и дело что все примеры использования данной функции сводились для "быстрого исправления ситуации", при всем при том что саму эту ситуацию разрулить тоже дело 5 минут.
спасибо за ответ, оставлю эту функцию пока в покое, до того момента когда без нее уж ну совсем никак :)

  Ответить  
 
 автор: cheops   (04.01.2012 в 15:31)   письмо автору
 
   для: Valick   (04.01.2012 в 15:00)
 

С другой стороны думать о том, где вызывать нужную функцию и отправлять HTTP-заголовки важно, когда вы работаете с HTTP-заголовками, ситуация, когда у вас вызов штатной функции языка высокого уровня типа session_start() зависит от положения, мягко говоря вызвана плохим проектированием на уровне языка... вы в других языках встречали ситуацию, когда вызов какой-нибудь строковой функции был невозможен из-за того, что не вызвана другая функция или не произошло какое-то событие? Я из широко-распространенных могу вспомнить только rand() для случайной установки генератора которой нужно вызывать инициализатор. В PHP эти две функции объединены в одну, что логично и полезно в условиях высокоуровневого языка, использующего готовые средства шифрования. А session_start() уже зависит от точки вызова... мягко говоря не последовательный интерфейс. Более того, когда у вас вызов функций зависит от других функций - это плохо, этого нельзя избежать вообще, но главная задача разработчика функций, классов, интерфейсов сделать все от себя возможное, чтобы свести количество таких функций на нет (даже rand() - это далеко не не небрежность, просто нужно два режима, решили организовать их так, без параметра).

PS Понятно, что при работе с HTTP довольно сложно уйти от особенностей библиотеки и зачастую нужно полное управление и PHP его предоставляет, но возводить подход, принятый в PHP в ранг эталона я бы не стал... это далеко не эталонный язык. Тем более, что такое поведение PHP можно отключить, в том числе не прибегая к функция ob_, хотя если разработчик хочет использовать именно их, почему бы и нет. Функция error_reporting() же ни у кого же возражения не вызывает.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования