一、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);
输出结果:
二、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(); }
输出结果:
三、总结:学习了什么场景用这个异常处理。看案例知道了一个大概。