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

Другие языки с объявлением автоматической переменной - как Perl - имеют строгий режим.

Путем активации этого строгого режима требуется объявление переменной, и Perl бросает ошибку, как только Вы пытаетесь использовать необъявленную переменную.

PHP предлагает какую-либо подобную функцию?

61
задан Gottlieb Notschnabel 25 August 2015 в 10:03
поделиться

9 ответов

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

 ?>
65
ответ дан 24 November 2019 в 17:15
поделиться

Используйте

error_reporting(-1);

для показа всех возможных ошибок, включая E_STRICT и даже когда новые уровни и константы будут добавлены в будущих версиях PHP.

(Reference)

40
ответ дан 24 November 2019 в 17:15
поделиться

Да, введите error_reporting (E_STRICT | E_ALL); в начале вашего скрипта.

3
ответ дан 24 November 2019 в 17:15
поделиться

Вы можете проверить error_reporting, и не забудьте установить display_errors также. Обратите внимание, что существует несколько уровней отчетов об ошибках.

2
ответ дан 24 November 2019 в 17:15
поделиться

Вы можете реализовать свою собственную функцию обработки ошибок с помощью set_error_handler().

Тогда вы сможете реагировать на определенные уровни ошибок по своему усмотрению.

Например, вместо того, чтобы просто показывать и записывать сообщение об ошибке, вы можете завершить скрипт, если переменная объявлена неправильно или если выполняется какое-либо условие, которое вам не нравится.

Таким образом, вы можете ввести очень строгую политику для любого кода, который выполняется на вашем экземпляре интерпретатора PHP.

1
ответ дан 24 November 2019 в 17:15
поделиться

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

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

0
ответ дан 24 November 2019 в 17:15
поделиться

Используйте

error_reporting(E_ALL);

в начале вашего PHP кода. Или установите параметр error_reporting в вашем файле php.ini, чтобы установить его для всех файлов PHP

1
ответ дан 24 November 2019 в 17:15
поделиться

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

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

0
ответ дан 24 November 2019 в 17:15
поделиться

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

1
ответ дан 24 November 2019 в 17:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: