`
bardo
  • 浏览: 378235 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
D1407912-ab64-3e76-ae37-b31aa4afa398
浅述PHP设计模式
浏览量:11805
9d6df9f7-91da-3787-a37c-0e826525dd5d
Zend Framewor...
浏览量:10112
85b628bd-a2ed-3de2-a4b1-0d34985ae8b6
PHP的IDE(集成开发环...
浏览量:9501
社区版块
存档分类
最新评论

PHP的errorhandler一些问题

    博客分类:
  • PHP
阅读更多

看一下以下的代码:

    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) {
        ;//这里根本不需要处理的
    }

 

确实是什么也没做。其实,我们平常说,要松耦合。松耦合往往就是关于这些细节的一念之间。

  

0
4
分享到:
评论

相关推荐

    Laravel开发-laravel-error-handler

    `laravel-error-handler`是一个专门为Laravel 5设计的错误处理程序包,它扩展并增强了框架内置的错误处理机制,提供更加优雅和自定义化的错误报告与显示。下面将详细讨论这个包涉及到的知识点。 1. **Laravel 错误...

    yii2-custom-errorhandler:Yii 2.x应用程序中的自定义错误处理

    $ php composer.phar require developeruz/yii2-custom-errorhandler " * " ### 环境: ### 在应用程序配置中,我们编写一个操作,当发生错误时将调用该操作 'components' => [ . . .

    PHP set_error_handler()函数使用详解(示例)

    `set_error_handler()` 函数就是为了解决这一问题而设计的。 该函数的基本语法如下: ```php string set_error_handler ( callback error_handler [, int error_types] ) ``` 参数 `error_handler` 是一个回调...

    错误处理程序:ErrorHandler组件提供了一些工具来管理错误并简化PHP代码的调试

    ErrorHandler组件提供了一些工具来管理错误并简化PHP代码的调试。 入门 $ composer require symfony/error-handler use Symfony \ Component \ ErrorHandler \ Debug ; use Symfony \ Component \ ErrorHandler \ ...

    ErrorHandler:简单的错误和异常处理程序

    错误处理程序 简单的错误和异常处理程序: 根据错误报告级别将错误转换为ErrorException实例 运行PHP CLI ,向STDERR报告错误/异常(甚至是致命错误)并使用异常代码... " geoffroy-aubry/errorhandler " : " 1.*

    yii2-error-handler:Mongo数据库的错误处理程序

    错误处理程序Mongo数据库的错误处理程序安装安装此扩展的首选方法是... , 'errorHandler' => [ 'errorAction' => 'site/error' , 'class' => \taguz91\ ErrorHandler \ ErrorHandler ::class, 'empresa' => $ _GET [

    SimpleErrorHandler:php(和hhvm)的简单错误处理程序

    set_error_handler( 'SimpleErrorHandler::error_handler' ); 在php.ini中,设置类似以下内容: auto_prepend_file = /path/to/file/prepend.php 要报告您的php应用程序中的所有错误,请添加以下内容: ini_set...

    PHP程序员面试宝典 笔试 (PHP版).zip

    面试时,你需要知道如何使用`try-catch`块来捕获和处理异常,理解错误级别,以及何时使用`trigger_error`和`set_error_handler`。 PHP与数据库的交互是常见的面试话题,尤其是MySQLi或PDO扩展的使用。了解SQL查询,...

    如何不让php显示warning,deprecated字样

    以下是一些关于如何禁止PHP显示这些错误信息的方法和相关知识点。 首先,PHP的配置文件`php.ini`中有一个关键的设置`display_errors`,它控制着是否在页面上显示错误信息。默认情况下,这个值可能是`On`,意味着...

    php-error-handler:使用回调处理常见错误

    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 Error(错误处理)讲解.md

    在PHP中,可以通过`set_error_handler()`函数来指定一个自定义的错误处理函数。该函数会在脚本执行过程中发生的任何错误被触发时被调用。自定义错误处理函数接收四个参数:错误级别、错误消息、错误发生的文件名和...

    PHP工程师 - PHP从零基础到原生项目开发

    对于错误和异常处理,理解try-catch机制,以及如何使用error_reporting()和set_error_handler()来定制错误处理也是很重要的。 步骤四:PHP项目实战 理论知识学得再好,也需要通过实际项目来锻炼。可以从开发简单的...

    PHP的一些面试题,希望对在找工作的朋友有用

    问题:列举一些PHP处理文件上传的方法。 解答:可以使用`$_FILES`超级全局数组来处理文件上传,常见的方法包括: - `move_uploaded_file()`:移动上传的文件。 - `is_uploaded_file()`:检查文件是否已成功上传。 #...

    Laravel开发-laravel_handler

    Laravel使用Monolog库来记录错误日志,可以在`config/logging.php`配置文件中调整日志级别(如debug、info、error等)和存储方式(如文件、数据库等)。 5. **错误代码管理** 在Laravel中,HTTP状态码通常与异常...

    php运行提示:Fatal error Allowed memory size内存不足的解决方法

    在PHP编程过程中,有时会遇到一个常见的错误提示:“Fatal error: Allowed memory size of [内存大小] bytes exhausted”,这意味着PHP在执行脚本时超过了分配给它的内存限制。这通常是由于程序存在内存泄漏、处理...

    php帮助文档,php。chm,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. ...

    php adodb文件包

    4. 错误处理和日志:ADODB有内置的错误处理机制,可能会有一个`errorhandler.php`来处理数据库错误。 5. 缓存系统:如`cache.php`,提供了一种方式将查询结果缓存到文件或内存中,提高性能。 6. 示例和测试文件:...

    PHP捕获Fatal error错误的方法

    PHP异常处理中 可以通过set_error_handler来捕获. 但是却只能捕获 NOTICE/WARNING级别的错误, 对于E_ERROR是无能为力的. register_shutdown_function 能解决set_error_handler的不足. 通过此函数注册好程序结束回调...

Global site tag (gtag.js) - Google Analytics