Я часто использую print_r($value, true)
, чтобы сбрасывать некоторые переменные в операторах журнала, и иногда я забываю установить второй параметр в значение true, что может привести к результату вместо результата, содержащегося в инструкции журнала, в большинстве случаев он просто теряется, но иногда он даже отображается в браузере пользователей.Есть ли в PHP эквивалент print_r или var_dump, который не возвращает результат по умолчанию?
Это произошло со мной, и внутри графа объектов, где есть некоторые учетные данные, и другие вещи, которые вам обычно не понравится конечному пользователю. Проблема заключалась в том, что вместо того, чтобы передавать true как второй параметр, по какой-то причине я передал null 1 год назад. И теперь произошел сбой в системе, который сделал неправильное отображение вывода.
Что вы делаете, чтобы избежать выхода из stacktraces с ошибкой программиста? Почему все функции демпинга PHP только эхо выводит по умолчанию? Поиск по нашей кодовой базе, я нашел довольно много вызовов print_r без второго параметра, установленного в true.
Я также использую json_encode() для вывода отладки иногда, потому что вывод иногда более краткий и удобный для чтения. Какие-либо недостатки с этим подходом?
Обычно мы используем какую-то буферизацию вывода, но не везде.
Либо будьте осторожны с 'print_r()' или напишите какую-либо функцию-оболочку для 'print_r()', которая никогда не будет эхом. ;) – Crontab
@Paul, вы можете [переопределить 'print_r' и' var_export'] (http://stackoverflow.com/a/2640992/632951), чтобы он плюнул на журнал ошибок независимо от второго аргумента. – Pacerier