PHP 5.4中的E_STRICT和E_ALL有什么区别?

时间:2015-10-04 05:51:39

标签: php php-5.4

在PHP 5.4中,使用E_STRICTE_ALL之间的区别是什么?

两者都一样吗?

2 个答案:

答案 0 :(得分:1)

在PHP 5.4中,使用E_STRICT和E_ALL 之间有什么区别。

好:

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 Manual: error_reporting

A similar question answered on SO here as well.

答案 1 :(得分:0)

SaleSchema.pre('save', function(next) { // do stuff next(); }); 将显示所有级别的错误,PHP 5.0上引入的E_ALL将显示严格编码标准/最佳实践的建议/通知。由于PHP E_STRICT已包含PHP E_STRICT

基于PHP手册:

  

在PHP 5中,可以使用新的错误级别E_STRICT。在PHP 5.4.0之前,E_STRICT未包含在E_ALL中,因此您必须在PHP中明确启用此类错误级别&lt; 5.4.0。在开发期间启用E_STRICT有一些好处。 STRICT消息提供的建议有助于确保代码的最佳互操作性和向前兼容性。这些消息可能包括静态调用非静态方法,在使用的特征中定义的兼容类定义中的属性,以及PHP 5.3之前的一些不推荐的特性会发出E_STRICT错误,例如在实例化时通过引用分配对象。 / p>