内容简介:PHP 基础篇 - PHP 错误级别详解
一、前言
最近经常看到工作 2 年左右的童鞋写的代码也会出现以静态方法的形式调用非静态方法,这是个 Deprecated
级别的语法错误,代码里不应该出现的。对方很郁闷,说:为什么我的环境可以正常运行呢?
二、详解
代码会不会报错,以及你能不能看到报错信息由 PHP 配置中以下两个参数影响,目前线上主流的配置如下(php.ini 文件中):
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT display_errors = Off
下面详细介绍这两个参数:
1. error_reporting
首先来说说 PHP 的错误级别,代码会不会报错由 error_reporting 参数决定,PHP 的错误级别种类如下( 点击查看中文版 ):
E_ALL - All errors and warnings (includes E_STRICT as of PHP 5.4.0) E_ERROR - fatal run-time errors E_RECOVERABLE_ERROR - almost fatal run-time errors E_WARNING - run-time warnings (non-fatal errors) E_PARSE - compile-time parse errors E_NOTICE - run-time notices (these are warnings which often result from a bug in your code, but it's possible that it was intentional (e.g., using an uninitialized variable and relying on the fact it is automatically initialized to an empty string) E_STRICT - run-time notices, enable to have PHP suggest changes to your code which will ensure the best interoperability and forward compatibility of your code E_CORE_ERROR - fatal errors that occur during PHP's initial startup E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's initial startup E_COMPILE_ERROR - fatal compile-time errors E_COMPILE_WARNING - compile-time warnings (non-fatal errors) E_USER_ERROR - user-generated error message E_USER_WARNING - user-generated warning message E_USER_NOTICE - user-generated notice message E_DEPRECATED - warn about code that will not work in future versions of PHP E_USER_DEPRECATED - user-generated deprecation warnings
其中 WARNING、NOTICE、DEPRECATED 等错误级别会抛出一个错误,但不会终止程序运行。
2. display_errors
再来看一下 display_errors 参数,该参数是是否展示错误信息,只有开启才会显示错误信息(值可以为 on|off、true|false、1|0)。
开发环境最好设置为开启,尽早发现问题,但生产环境一定要关闭。( 点击查看中文版官方文档 )
3. 问题演示
下面使用 PHP 的 运行时配置 ,改变 PHP 的 error_reporting 和 display_errors,演示上面的问题。代码如下:
<?php // error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT); // 该级别下面的代码不会抛出错误 error_reporting(E_ALL & ~E_NOTICE); ini_set("display_errors", "on"); class Foo { public function test() { echo 'test'; } } Foo::test();
运行该代码会输出 test
,但同时会抛出一个 Deprecated
级别的错误。这种情况应该杜绝,规范开发,从基础做起,人人有责!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- iOS原生级别后台下载详解
- Oracle数据库不同损坏级别的恢复详解
- Unsafe穿透Java层到JVM层,提供CPU级别和操作系统级别的操作
- 程序日志级别规范
- Spring事务的传播级别
- MySQL 隔离级别详细解析
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
编写可读代码的艺术
Boswell, D.、Foucher, T. / 尹哲、郑秀雯 / 机械工业出版社 / 2012-7-10 / 59.00元
细节决定成败,思路清晰、言简意赅的代码让程序员一目了然;而格式凌乱、拖沓冗长的代码让程序员一头雾水。除了可以正确运行以外,优秀的代码必须具备良好的可读性,编写的代码要使其他人能在最短的时间内理解才行。本书旨在强调代码对人的友好性和可读性。 本书关注编码的细节,总结了很多提高代码可读性的小技巧,看似都微不足道,但是对于整个软件系统的开发而言,它们与宏观的架构决策、设计思想、指导原则同样重要。编......一起来看看 《编写可读代码的艺术》 这本书的介绍吧!