批改状态:合格
老师批语:多尝试是对的
<?php// 一个案例演示sleep(), wakeuup()class User1{protected $name = '杨过';private $age = 28;}class User2 extends User1{protected $sex = '男';protected $skill = '黯然销魂掌';protected $partner = '小龙女';protected $crush = '郭襄';public function get(){return $this->name . '的妻子是' . $this->partner . '。';}}class User3 extends User2{public function __sleep(){return ['name','partner','crush'];}public function __wakeup(){$this->crush = '保密';}}$user2= new User2();echo $user2->get(),'<hr>';echo '对象User2 序列化:' . serialize($user2),'<hr>';$user3 = new User3();echo'对象User3 序列化:' . serialize($user3),'<hr>';echo '对象User3 反序列化:','<br>';$str = unserialize( serialize($user3));var_dump($str);
实例效果
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>异常处理</title></head><body><!-- 模拟一个表单输入界面 --><form><input type="text"><br/><label for="">密码:</label><input type="password"><br/><label for="">邮箱:</label><input type="mail"><br/><input type="submit"></form><?php// 自已创建一个操作的异常类class demoException extends Exception{public function __toString(){return <<< DBE<style>table {border-collapse: collapse;border:1px solid black;text-align: center;}td {border:1px solid black;padding: 5px;}tr:first-of-type {background-color:#eee;}tr:last-of-type td {color: coral;}</style><table><tr><td>代码</td><td>信息</td><td>文件</td><td>行号</td></tr><tr><td>$this->code</td><td>$this->message</td><td>$this->file</td><td>$this->line</td></tr></table>DBE;}}// 异常处理try{throw new demoException('输入邮箱错误!',101);}catch (demoException $e){echo $e;}echo '<hr>';?></body></html>
实例效果
总结:
1.序列化和反序列化可用于数据的保存、传输,比如数据库连接参数的保存和传输,实现自动连接数据库的功能。
序列化 调用 sleep()
反序列化 调用 wakeup()
2.__tostring在异常处理中可自定义出错信息。
我不清楚如何产生表单输入错误,并捕抓错误信息,我尝试输入不带@的邮箱,但没有错误信息,只能使用throw 语句模拟错误信息。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号