|
|
|
| Игорь Вячеславович, я лично против ob_start() и объяснил почему, но мой пост был удален (по неизвестной причине которая в соответствии с правилами не обсуждается), ну значит так и останусь наедине со своими мыслями.
может я не прав и ob_start() действительно отличная функция (а не "костыль", в чем я пока безоговорочно уверен)
могли бы вы привести действительно вескую причину использования этой функции?
[поправлено модератором: тема выделена в отдельную из include нарушает механизм работы сессий] | |
|
|
|
|
|
|
|
для: Valick
(04.01.2012 в 13:45)
| | Хм... не знай, пост скрытый вижу, но тут помоему вообще не про ob_start(), если вы хотите его обсудить, то можно просто новую тему завести (давайте так и сделаем).
Кэширование можно включить на уровне сервера, можно на уровне скрипта - это все штатные возможности. Есть ситуации, когда без него не обойтись, например, когда вам нужно послать в HTTP-заголовке размер файла... я бы функции управления выводом, как "костыль", тем более управление буфером - вещь замечательная и нужная, понятное дело, что применять их следует тогда, когда они действительно требуются. Их наличие не отменяет необходимость в понимании протокола HTTP, но "костылем" бы я их не назвал... самому ими регулярно приходиться пользоваться и должен сказать по делу и по заранее составленному проекту, а не для быстрого исправления ситуации (условие, когда костыли и появляются). | |
|
|
|
|
|
|
|
для: cheops
(04.01.2012 в 14:43)
| | в том то и дело что все примеры использования данной функции сводились для "быстрого исправления ситуации", при всем при том что саму эту ситуацию разрулить тоже дело 5 минут.
спасибо за ответ, оставлю эту функцию пока в покое, до того момента когда без нее уж ну совсем никак :) | |
|
|
|
|
|
|
|
для: Valick
(04.01.2012 в 15:00)
| | С другой стороны думать о том, где вызывать нужную функцию и отправлять HTTP-заголовки важно, когда вы работаете с HTTP-заголовками, ситуация, когда у вас вызов штатной функции языка высокого уровня типа session_start() зависит от положения, мягко говоря вызвана плохим проектированием на уровне языка... вы в других языках встречали ситуацию, когда вызов какой-нибудь строковой функции был невозможен из-за того, что не вызвана другая функция или не произошло какое-то событие? Я из широко-распространенных могу вспомнить только rand() для случайной установки генератора которой нужно вызывать инициализатор. В PHP эти две функции объединены в одну, что логично и полезно в условиях высокоуровневого языка, использующего готовые средства шифрования. А session_start() уже зависит от точки вызова... мягко говоря не последовательный интерфейс. Более того, когда у вас вызов функций зависит от других функций - это плохо, этого нельзя избежать вообще, но главная задача разработчика функций, классов, интерфейсов сделать все от себя возможное, чтобы свести количество таких функций на нет (даже rand() - это далеко не не небрежность, просто нужно два режима, решили организовать их так, без параметра).
PS Понятно, что при работе с HTTP довольно сложно уйти от особенностей библиотеки и зачастую нужно полное управление и PHP его предоставляет, но возводить подход, принятый в PHP в ранг эталона я бы не стал... это далеко не эталонный язык. Тем более, что такое поведение PHP можно отключить, в том числе не прибегая к функция ob_, хотя если разработчик хочет использовать именно их, почему бы и нет. Функция error_reporting() же ни у кого же возражения не вызывает. | |
|
|
|