Intereting Posts
Каков наилучший способ использования / хранения ключей шифрования в MySQL Почему изменения в некоторых php-файлах так долго отображаться на живом сайте Получить файлmime для самого последнего обновленного файла в папке Укладка тройных выражений Предлагаемое решение: создание уникальных идентификаторов в распределенной среде PHP, MySQL – загружает около 100 тыс. Записей и экспортирует их в xml Получить значения формы в контроллере Symfony2, Ребенок не существует Ничто не переводится с использованием gettext Нужна помощь, запрашивающая строки UTF8 от Vertica с драйвером PHP ODBC PDO – запрос не дает результатов Почему и как вы используете Исключения в этом примере кода PHP? Как получить имя компьютера из IP-адреса? Как удалить «public / index.php» в larvel, созданный url? как получить тип свойства объекта doctrine Как сделать форму, отправьте PHP-способ с помощью Angularjs?

Строгий режим в PHP?

Другие языки с автоматической декларацией переменных – например, 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.

Да, вы делаете это с отчетами об ошибках.

http://www.php.net/manual/en/function.error-reporting.php

Я бы предположил, что требования к отчетности и обработке ошибок различаются в пределах вашей среды разработки и вашей живой производственной среды (WWW, Intranet компании и т. Д.). Во время разработки вы захотите увидеть как можно больше деталей, чтобы найти и исправить проблемы.

В живой среде, я думаю, не хочу, чтобы вы отображали сообщения об ошибках PHP пользователям, а скорее позволяли сценарию продолжать работу с уменьшенной функциональностью (например, сообщение типа «К сожалению, мы не можем обновить ваш профиль на данный момент», или перенаправить пользователя на домашнюю страницу и т. д.). Одним из способов достижения этого было бы использование пользовательских обработчиков ошибок для каждой среды