Горбунов Олег - есть еще более яркий пример. register_globals. Пожалуйста, придумана для упрощения жизни. Ан, нет, пришлось вводить _искусственные проблемы_ в виде register_globals = Off.
MiksIr, смотри. Были magic quotes. Нам приходилось их отлавливать и исправлять положение дел в самом скрипте. Был register globals, который так же нам мешал. Теперь нам ещё нужно и заголовки контролировать. Это излишняя забота разработчиков, которая в итоге и приводит к проблемам. Почему бы не сделать эту возможность опциональной? Как часто ваши скрипты падают с неисправимыми ошибками? Разве что time limit или memory limit превышены. Вобще мне и самому нравится такое поведение. Меня в тупик поставил только eval, который не влияет на ход работы основного скрипта, но влияет на его ответ.
Sergey89 register globals мешал плоходумающим людям писать без потенциальных ошибок безопасности. А казалось бы, инициализируй все переменные перед тем, как ты их использовать хочешь, и никаких проблем. Вы инициализируете переменные? Или считаете, что это лишняя забота разработчиков? Вот установка статуса - это та же инициализация общения программы на PHP с вызывающим окружением. И вообще у меня никогда такой проблемы не вставало по двум причинам. 1 - я не использую eval, это это моветон 2 - я всегда отлавливаю ошибки (как PHP, так и эксепшены) в едином месте, где решаю что выдать и сам устанавливаю 500. И с контент-типом тоже самое - при наличии разных типов view мне гораздо сложнее его не выдать, чем выдать. 3 - я сам мало что пишу, а ведущему мне удалось привить желание све делать красиво. Для остальных горе писателей принудительное 500 очень кстати... и у них, думается, скрипты падают чаще. Что до конкертно eval-а - тут соглашусть, что момент спорный.
Можно рассматривать это так Код (Text): $sapi_status = isset($user_defined_status) ? $user_defined_status : 200; =)
хыхы. MiksIr, да по большому счету, я тоже с тобой согласен. Бесит попытка несколько проблем подвести под одно оправдание. Пусть бы он всегда тогда в 500 падал. Документированно. Но не при display_errors = off только.
Горбунов Олег, вообще тут есть свой резон. Типа, если отображение ошибок выключено - значит продакшн, значит нужно кодами отрабатывать. А если отображение ошибок включено, то разработка... и если выдать 500 - начнется куча проблем у народа... особо когда они юзают IE с "friendly" ошибками. В общем, много таких заморочек в PHP. Хы... может в 6-ке будет все гладко и шелковисто
Только даже этот 500 статус зависит от многих факторов. Код (Text): display_errors = Off output_buffering = Off PHP: <?php // 500 print 'hello'; some_undefined_function(); // 500 ob_start(); print str_repeat('hello', 1000); some_undefined_function(); // 200 print 'hello'; ob_flush(); some_undefined_function(); // 200 print str_repeat('hello', 1000); some_undefined_function(); Даже понятно, почему именно такое поведение. Но это как-то нелогично, чтоли :roll: