看一下以下的代码:
public function getNumRows() {
$level = error_reporting();
error_reporting(0);
set_error_handler(array($this,'errorHandler'));
$rowCount = @mysql_num_rows($this->resultId) ;
error_reporting($level);
restore_error_handler();
return $rowCount;
}
一个WEB应用中,肯定有一个集中处理的errorHandler类,以及与之对应的'errorHandler'。但是,有些时候,就是要特别处理一些错误,比如上面的mysql_num_rows出来的NOTICE警告,就是不想要它。怎么办?
有人会问:有没有 get_current_errorHandler函数?对不起,没有,你无法获取当前的'errorHandler'。
但是,上面代码却实现了这一切。这就是说:restore_error_handler这个函数,是把'errorHandler'回到上一个设置。
于是又引发了另一个问题:有没有能够回到PHP的默认errorHandler的函数?对不起,也没有。
那么,我就把我现在系统中的已设的errorHandler参数记录下来。先走restore_error_handler(),肯定是返回到PHP的默认errorHandler。这样做当然是做到了。但,有一最大的坏处。你这一个部件,无法从系统拆开了。为什么?
你保存了陌生人的参数,从而形成了紧耦合。别人如果只用你这一部分代码,拿过去肯定要改。
所以,建议的做法,就如上面的代码。先读取error_reporting,并set_error_handler到你的函数。这个函数你可以随你的想法而定,可以一行代码都不写。
然后,回去时,使用:
error_reporting($level);
restore_error_handler();
上面就是这样。error_reporting(0),让程序什么都不报,并且,set_error_handler(array($this,'errorHandler')); 是当前类的 'errorHandler' 方法。
请看这个方法:
public function errorHandler($errno, $errstr) {
;//这里根本不需要处理的
}
确实是什么也没做。其实,我们平常说,要松耦合。松耦合往往就是关于这些细节的一念之间。
分享到:
相关推荐
`laravel-error-handler`是一个专门为Laravel 5设计的错误处理程序包,它扩展并增强了框架内置的错误处理机制,提供更加优雅和自定义化的错误报告与显示。下面将详细讨论这个包涉及到的知识点。 1. **Laravel 错误...
$ php composer.phar require developeruz/yii2-custom-errorhandler " * " ### 环境: ### 在应用程序配置中,我们编写一个操作,当发生错误时将调用该操作 'components' => [ . . .
`set_error_handler()` 函数就是为了解决这一问题而设计的。 该函数的基本语法如下: ```php string set_error_handler ( callback error_handler [, int error_types] ) ``` 参数 `error_handler` 是一个回调...
ErrorHandler组件提供了一些工具来管理错误并简化PHP代码的调试。 入门 $ composer require symfony/error-handler use Symfony \ Component \ ErrorHandler \ Debug ; use Symfony \ Component \ ErrorHandler \ ...
错误处理程序 简单的错误和异常处理程序: 根据错误报告级别将错误转换为ErrorException实例 运行PHP CLI ,向STDERR报告错误/异常(甚至是致命错误)并使用异常代码... " geoffroy-aubry/errorhandler " : " 1.*
错误处理程序Mongo数据库的错误处理程序安装安装此扩展的首选方法是... , 'errorHandler' => [ 'errorAction' => 'site/error' , 'class' => \taguz91\ ErrorHandler \ ErrorHandler ::class, 'empresa' => $ _GET [
set_error_handler( 'SimpleErrorHandler::error_handler' ); 在php.ini中,设置类似以下内容: auto_prepend_file = /path/to/file/prepend.php 要报告您的php应用程序中的所有错误,请添加以下内容: ini_set...
面试时,你需要知道如何使用`try-catch`块来捕获和处理异常,理解错误级别,以及何时使用`trigger_error`和`set_error_handler`。 PHP与数据库的交互是常见的面试话题,尤其是MySQLi或PDO扩展的使用。了解SQL查询,...
以下是一些关于如何禁止PHP显示这些错误信息的方法和相关知识点。 首先,PHP的配置文件`php.ini`中有一个关键的设置`display_errors`,它控制着是否在页面上显示错误信息。默认情况下,这个值可能是`On`,意味着...
PHP 错误处理程序 ... SHUTDOWN Call to undefined function unexisted_function() in /Users/ikondrashov/github/php-error-handler/test/uncatchable.php:6 URL: localhost:3000/uncatchable.php ...
在PHP中,可以通过`set_error_handler()`函数来指定一个自定义的错误处理函数。该函数会在脚本执行过程中发生的任何错误被触发时被调用。自定义错误处理函数接收四个参数:错误级别、错误消息、错误发生的文件名和...
对于错误和异常处理,理解try-catch机制,以及如何使用error_reporting()和set_error_handler()来定制错误处理也是很重要的。 步骤四:PHP项目实战 理论知识学得再好,也需要通过实际项目来锻炼。可以从开发简单的...
问题:列举一些PHP处理文件上传的方法。 解答:可以使用`$_FILES`超级全局数组来处理文件上传,常见的方法包括: - `move_uploaded_file()`:移动上传的文件。 - `is_uploaded_file()`:检查文件是否已成功上传。 #...
Laravel使用Monolog库来记录错误日志,可以在`config/logging.php`配置文件中调整日志级别(如debug、info、error等)和存储方式(如文件、数据库等)。 5. **错误代码管理** 在Laravel中,HTTP状态码通常与异常...
在PHP编程过程中,有时会遇到一个常见的错误提示:“Fatal error: Allowed memory size of [内存大小] bytes exhausted”,这意味着PHP在执行脚本时超过了分配给它的内存限制。这通常是由于程序存在内存泄漏、处理...
Error Handling and Logging Functions XXXIII. Exif Functions XXXIV. Expect Functions XXXV. File Alteration Monitor Functions XXXVI. Forms Data Format Functions XXXVII. filePro Functions XXXVIII. ...
4. 错误处理和日志:ADODB有内置的错误处理机制,可能会有一个`errorhandler.php`来处理数据库错误。 5. 缓存系统:如`cache.php`,提供了一种方式将查询结果缓存到文件或内存中,提高性能。 6. 示例和测试文件:...
PHP异常处理中 可以通过set_error_handler来捕获. 但是却只能捕获 NOTICE/WARNING级别的错误, 对于E_ERROR是无能为力的. register_shutdown_function 能解决set_error_handler的不足. 通过此函数注册好程序结束回调...