В PHP 5.4, в чем разница между использованием E_STRICT
и E_ALL
?
Оба одинаковы?
В PHP 5.4, в чем разница между использованием E_STRICT
и E_ALL
?
Оба одинаковы?
В чем разница между использованием E_STRICT и E_ALL в PHP 5.4.
Что ж:
5.4.0 E_STRICT became part of E_ALL.
5.3.0 E_DEPRECATED and E_USER_DEPRECATED introduced.
5.2.0 E_RECOVERABLE_ERROR introduced.
5.0.0 E_STRICT introduced (not part of E_ALL).
Пример:
<?php
// Turn off all error reporting
error_reporting(0);
// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);
// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings ...)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
// Report all errors except E_NOTICE
error_reporting(E_ALL & ~E_NOTICE);
// Report all PHP errors (see changelog)
error_reporting(E_ALL);
// Report all PHP errors
error_reporting(-1);
// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
?>
Руководство по PHP: error_reporting
Аналогичный вопрос ответил на SO и здесь.
E_ALL
покажет все уровни ошибок, E_STRICT
, представленный в PHP 5.0, покажет предложение/уведомление о строгом стандарте кодирования/лучшей практике. Поскольку PHP 5.4 E_STRICT
был включен в E_ALL
.
На основе руководства PHP:
В PHP 5 доступен новый уровень ошибки E_STRICT. До PHP 5.4.0 E_STRICT не был включен в E_ALL, поэтому в PHP ‹ 5.4.0 вам пришлось бы явно включать этот тип уровня ошибок. Включение E_STRICT во время разработки имеет некоторые преимущества. В сообщениях STRICT содержатся предложения, которые могут помочь обеспечить наилучшую совместимость и совместимость вашего кода с последующими версиями. Эти сообщения могут включать в себя такие вещи, как статический вызов нестатических методов, определение свойств в определении совместимого класса, когда они определены в используемом свойстве, и до версии PHP 5.3 некоторые устаревшие функции выдавали ошибки E_STRICT, такие как назначение объектов по ссылке при создании экземпляра.