Другие языки с автоматической декларацией переменных – например, Perl – имеют строгий режим.
При активации этого строгого режима требуется объявление переменной, и Perl выдает ошибку, как только вы пытаетесь использовать необъявленную переменную.
Предлагает ли PHP какую-либо аналогичную функцию?
Вид. Вы можете активировать уровень E_NOTICE
в отчетах об ошибках . (Список констант здесь .)
Каждый экземпляр использования необъявленной переменной E_NOTICE
.
Ошибка E_STRICT
error livel также выведет эти уведомления, а также другие подсказки о том, как оптимизировать ваш код.
error_reporting(E_STRICT);
Завершение скрипта
Если вы действительно серьезны и хотите, чтобы ваш скрипт прекращался, а не просто выводил уведомление при обнаружении необъявленной переменной, вы могли бы создать собственный обработчик ошибок .
Рабочий пример, который обрабатывает только УВЕДОМЛЕНИЯ с «Неопределенной переменной» в них и передает все остальное на обработчик ошибок PHP по умолчанию:
<?php error_reporting(E_STRICT); function terminate_missing_variables($errno, $errstr, $errfile, $errline) { if (($errno == E_NOTICE) and (strstr($errstr, "Undefined variable"))) die ("$errstr in $errfile line $errline"); return false; // Let the PHP error handler handle all the rest } $old_error_handler = set_error_handler("terminate_missing_variables"); echo $test; // Will throw custom error xxxx(); // Will throw standard PHP error ?>
использование
error_reporting(-1);
чтобы показать каждую возможную ошибку, включая E_STRICT
и даже когда новые уровни и константы добавляются в будущих версиях PHP.
( Ссылка )
Да, введите error_reporting(E_STRICT|E_ALL);
в начале вашего скрипта.
Вы можете проверить error_reporting
и не забудьте также установить display_errors
. Обратите внимание, что существует несколько уровней отчетов об ошибках.
использование
error_reporting(E_ALL);
в начале вашего PHP-кода. Или установите параметр error_reporting в файле php.ini, чтобы установить его для всех файлов PHP
PHP предупреждает о необъявленных переменных по умолчанию, вам просто нужно включить уровень сообщений об ошибках , чтобы вы увидели уведомления. Обратите внимание, что, поскольку нет специального синтаксиса для объявления переменной в PHP, и вы просто объявляете ее, назначая ей, она может только предупредить вас, когда вы пытаетесь использовать значение необъявленной переменной. В отличие от других языков, «присвоения необъявленным переменным» не существует, поэтому PHP не может вас предупредить.
Вы можете реализовать свою собственную функцию обработки ошибок с помощью set_error_handler()
.
Затем вы можете реагировать на определенные уровни ошибок, как вы пожелаете.
Например, вместо того, чтобы просто показывать и регистрировать сообщение об ошибке, вы можете прекратить выполнение сценария, если переменная не объявлена должным образом или если выполнено какое-либо условие, которое вам не нравится.
Таким образом, вы можете применять очень строгую политику для любого кода, который выполняется на вашем экземпляре интерпретатора PHP.
Да, вы делаете это с отчетами об ошибках.
Я бы предположил, что требования к отчетности и обработке ошибок различаются в пределах вашей среды разработки и вашей живой производственной среды (WWW, Intranet компании и т. Д.). Во время разработки вы захотите увидеть как можно больше деталей, чтобы найти и исправить проблемы.
В живой среде, я думаю, не хочу, чтобы вы отображали сообщения об ошибках PHP пользователям, а скорее позволяли сценарию продолжать работу с уменьшенной функциональностью (например, сообщение типа «К сожалению, мы не можем обновить ваш профиль на данный момент», или перенаправить пользователя на домашнюю страницу и т. д.). Одним из способов достижения этого было бы использование пользовательских обработчиков ошибок для каждой среды