接着完善自己的php框架,本次更新的主要内容有:
<p>异常处理:异常处理是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况(即超出程序正常执行流程的某些特殊条件)</p>
异常处理用于处理程序中的异常状况,虽说是“异常状态”,但仍然还是在程序编写人员的预料之中,其实程序的异常处理完全可以用‘if else’语句来代替,但异常处理自然有其优势之处。
个人总结其优点如下:
虽然将代码放在try catch块中会有微微的效率差,但是跟这些优点一比,这点消耗就不算什么了。那么PHP的异常处理怎么使用呢?
立即学习“PHP免费学习笔记(深入)”;
PHP内置有Exception类,使得我们可以通过实例化异常类来抛出异常。我们将代码放在try语句中执行,并在其后用catch试图捕捉到在try代码块中抛出的异常,并对异常进行处理。我们还可以在catch代码段后使用finally语句块,无论是否有异常都会执行finally代码块的代码,try catch语句形如下面代码:
<code class="none">try{
    throw new Exeption('msg'[,'code',$previous_exeception]);
}catch(Exeption $var) {
    process($var);
}catch(MyException $e){
    process($e)
}finally{
    dosomething();
}</code>使用try catch语句,需要注意:
说了那么多异常相关(当然解释这些也是为了能理解和使用框架),那么框架里要怎么实现呢?
我们可以重写异常类,完善其内部方法:
<code class="none"><?php  
class Exception  
{  
    protected $message = 'Unknown exception';   // 异常信息  
    protected $code = 0;                        // 异常代码  
    protected $file;                            // 发生异常的文件名  
    protected $line;                            // 发生异常的代码行号  
    function __construct($message = null, $code = null,$previous_exeception = null);  
    final function getMessage();                // 返回异常信息  
    final function getCode();                   // 返回异常代码  
    final function getFile();                   // 返回发生异常的文件名  
    final function getLine();                   // 返回发生异常的代码行号  
    final function getTrace();                  // 返回异常trace数组  
    final function getTraceAsString();          // 返回异常trace信息
    /**
     * 记录错误日志
     */
    protected function log(){
        Logger::debug();
    }
}  </code>如上,final方法是不可以重写的,除此之外,我们可以定义自己的方法,如记录异常日志,像我自定义的log方法,在catch代码块中,就可以直接使用$e->log来记录一个异常日志了。
我们可以使用set_exception_handler('exceptionHandler')来全局捕获没有被catch块捕获到的异常,此异常处理函数需要传入一个异常处理对象,这样可以分析此异常处理信息,避免系统出现不人性化的提示,增强框架的健壮性。
<code class="none">function exceptionHandler($e) {
    echo '有未被捕获的异常,在' . $e->getFile() . "的" . $e->getLine() . "行!";
}</code>顺便再说一下其他的全局处理函数:
但是要注意这些全局函数需要在代码段的前面已经定义过再注册。
初次使用yii2的ActivceRecord类觉得好方便,只需要定义其字段同名属性再调用save方法就OK了(好神奇啊),它是怎么实现的呢,看了下源码,明白了其大致实现过程(基类)。
感觉好久没写博客了,‘毕业’对于一个类似专科学习方式的人来说是有些繁琐了,保存好对学校的留恋,继续出发。
真是越学习越觉得自己认识不够,在看一些PHP框架源码时,有时候会感觉自己还差得很远,那种整体感和布局感,估计需要时间和经验的积累吧。
因为框架的应用和自己现在的工作关系不是特别大,而且自己最近在努力学习一些编程底层类的东西,所以框架系列可能会有些‘便秘’,会写点其他的。。。这两天准备换地方住了,跑着看房子了,原谅我‘短’一点。。
哈哈,欢迎继续关注我的博客,嗯,一直在用心。
                        
                        PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
                
                                
                                
                                
                                
                                
                                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号