Другие языки с объявлением автоматической переменной - как Perl - имеют строгий режим.
Путем активации этого строгого режима требуется объявление переменной, и Perl бросает ошибку, как только Вы пытаетесь использовать необъявленную переменную.
PHP предлагает какую-либо подобную функцию?
Kind of. Вы можете активировать уровень E_NOTICE
в ваших сообщениях об ошибках. (Список констант здесь.)
Каждый случай использования необъявленной переменной вызовет E_NOTICE
.
Уровень ошибок E_STRICT
также будет выдавать такие уведомления, а также другие подсказки по оптимизации вашего кода.
error_reporting(E_STRICT);
Завершение скрипта
Если вы действительно серьезно настроены и хотите, чтобы ваш скрипт завершался, а не просто выдавал уведомление при встрече с необъявленной переменной, вы можете создать пользовательский обработчик ошибок.
Рабочий пример, который обрабатывает только E_NOTICE
с "Undefined variable" в них и передает все остальное в стандартный обработчик ошибок 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
также.
Обратите внимание, что существует несколько уровней отчетов об ошибках.
Вы можете реализовать свою собственную функцию обработки ошибок с помощью set_error_handler()
.
Тогда вы сможете реагировать на определенные уровни ошибок по своему усмотрению.
Например, вместо того, чтобы просто показывать и записывать сообщение об ошибке, вы можете завершить скрипт, если переменная объявлена неправильно или если выполняется какое-либо условие, которое вам не нравится.
Таким образом, вы можете ввести очень строгую политику для любого кода, который выполняется на вашем экземпляре интерпретатора PHP.
Я бы предположил, что требования к отчетности и обработке ошибок отличаются в вашей среде разработки и в вашей живой производственной среде (WWW, интранет компании и т.д.). Во время разработки вы захотите видеть как можно больше деталей, чтобы найти и устранить проблемы.
В живой среде, я думаю, вы не захотите показывать пользователям сообщения об ошибках PHP, а скорее позволите скрипту продолжить работу с урезанной функциональностью (например, сообщение типа "Извините, мы не можем обновить ваш профиль в данный момент", или перенаправить пользователя на главную страницу и т.д.). Для этого можно использовать пользовательские обработчики ошибок для каждого окружения
Используйте
error_reporting(E_ALL);
в начале вашего PHP кода. Или установите параметр error_reporting в вашем файле php.ini, чтобы установить его для всех файлов PHP
PHP - это предупреждение о необъявленных переменных по умолчанию, вам просто нужно повысить уровень сообщения об ошибках , чтобы вы могли видеть уведомления. Однако обратите внимание, что, поскольку нет специального синтаксиса для объявления переменной в PHP, и вы просто объявляете ее, назначая ей, он может только предупредить вас, когда вы попытаетесь использовать значение необъявленной переменной. В отличие от других языков, «присваивания необъявленным переменным» не существует, поэтому PHP не может вас предупредить.