Blogger Information
Blog 31
fans 0
comment 0
visits 30277
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP中的sleep、wakeup及异常处理
emy
Original
815 people have browsed it

一、sleep、wakeup有什么用?
php中的 __sleep() 方法常用于提交未提交的数据,或类似的清理操作,与__sleep() 相反,__wakeup() 经常用在反序列化操作中,例如重新建立数据库连接,或执行其它初始化操作。两者都是魔术方法的一种。

<?php
    class Emy  {
        private $name;
        private $city;
        public function __construct($name,$city) {
            $this->name=$name;
            $this->city=$city;
        }
        // 序列化的时候自动调用      
        public function __sleep() {
            return array('name','city');
        }
        //反序列化的时候自动调用
        public function __wakeup() {
            $this->what='在学PHP';
        }
    }
  
    $emy=new Emy('扬扬','foshan');
    $str=serialize($emy);    //序列化
    $emy=unserialize($str);    //反序列化
    $res=print_r($emy,true);
    printf('<pre>%s</pre>',$res);

输出结果:

QQ截图20200512224450.jpg

二、php异常处理

异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程。这种情况称为异常。

1-适当的处理异常代码应该包括:

try:监测代码块
catch:捕获异常
throw:抛出异常
finally:无论有无异常都会执行,可以省略
Exception:异常类

2-语法结构:

try{
        //检测代码
    }catch(Exception $ex){
        //捕获异常
    }
    finally{
        //不论是否有异常,都要执行,finally可以省略
    }

3-实例说明:

<?php
class nameException extends Exception
    {
        public function errorMessage()
        {
            echo '你的账号或密码出错';
        }
    }
    // 验证不对时调用这个类
    class passException extends Exception
    {
        public function testMessage()
        {
            echo '验证错误';
        }
    }
    $user = 111 ;
    $password = 888;
    $serial  = 12;
    try{
        // 当账号出错时,抛出一个异常
        if($user != 11 || $password != 88):
            throw new nameException();
        // 当验证码出错时,抛出一个异常
        elseif ($serial != 102):
            throw new passException();
        // 当它们都出错时,调用顶级异常类
        else:
            throw new Exception('当前用户不存在!');
        endif;
    }
    // 通常一个`throw`必须至少对一个`catch`
    catch(nameException $a)
    {
        echo $a->errorMessage();
    }
    catch(passException $a)
    {
        echo $a->testMessage();
    }
    catch(Exception $a)
    {
        echo $a->getMessage();
    }

输出结果:
QQ截图20200512232546.jpg

三、总结:学习了什么场景用这个异常处理。看案例知道了一个大概。

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:总结比代码写得好
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post