Ответ 1
Единственное небольшое функциональное отличие состоит в том, что ini_set
возвращает false
, когда он не смог изменить параметр, а error_reporting
всегда возвращает старый уровень ошибки.
При использовании error_reporting()
или ini_set('error_reporting')
в моих сценариях существуют ли различия в функциональности между ними? Один метод предпочтительнее другого?
Для того, что стоит, я вижу много фреймворков с использованием error_reporting()
, но обе опции устанавливаются только во время выполнения, а затем reset возвращаются к своему по умолчанию в php.ini после выполнения script.
Единственное небольшое функциональное отличие состоит в том, что ini_set
возвращает false
, когда он не смог изменить параметр, а error_reporting
всегда возвращает старый уровень ошибки.
"Две дороги, ведущие в Рим": ini_set ('error_reporting',) переопределяет параметр, установленный в файле php.ini. error_reporting() получает номер уровня или идентификатор уровня
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
Обе опции вступают в силу до тех пор, пока script не завершит выполнение. Следующий будет использовать параметры, определенные в .ini, снова.
Они функционально идентичны, но если вы используете IDE, которая знает имена функций PHP, это простой способ убедиться, что вы случайно не ошиблись в имени директивы, которую вы связываете, чтобы установить.
В разделе примеров PHP Manual Entry для error_reporting()
:
// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
Кроме того, хотя документы заявили, что подпись для error_reporting
:
int error_reporting ([ int $level ] )
это не совсем правильно, потому что вы можете установить string
и прочитать его с помощью ini_get
:
error_reporting('123 hello world');
var_dump(ini_get('error_reporting'));
дает:
string(15) "123 hello world"
Итак, error_reporting($x)
семантически эквивалентно ini_set('error_reporting', $x)
,
и error_reporting()
семантически эквивалентно (int)ini_get('error_reporting')
.