博主信息
博文 39
粉丝 0
评论 0
访问量 39974
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PHP:对象序列化与实战案例
原创
856人浏览过

一、sleep()和wakeup()的应用场景实例

  1. <?php
  2. // 一个案例演示sleep(), wakeuup()
  3. class User1
  4. {
  5. protected $name = '杨过';
  6. private $age = 28;
  7. }
  8. class User2 extends User1
  9. {
  10. protected $sex = '男';
  11. protected $skill = '黯然销魂掌';
  12. protected $partner = '小龙女';
  13. protected $crush = '郭襄';
  14. public function get()
  15. {
  16. return $this->name . '的妻子是' . $this->partner . '。';
  17. }
  18. }
  19. class User3 extends User2
  20. {
  21. public function __sleep()
  22. {
  23. return ['name','partner','crush'];
  24. }
  25. public function __wakeup()
  26. {
  27. $this->crush = '保密';
  28. }
  29. }
  30. $user2= new User2();
  31. echo $user2->get(),'<hr>';
  32. echo '对象User2 序列化:' . serialize($user2),'<hr>';
  33. $user3 = new User3();
  34. echo'对象User3 序列化:' . serialize($user3),'<hr>';
  35. echo '对象User3 反序列化:','<br>';
  36. $str = unserialize( serialize($user3));
  37. var_dump($str);

实例效果

二、模拟表单输入的异常处理

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>异常处理</title>
  7. </head>
  8. <body>
  9. <!-- 模拟一个表单输入界面 -->
  10. <form>
  11. <input type="text">
  12. <br/>
  13. <label for="">密码:</label>
  14. <input type="password">
  15. <br/>
  16. <label for="">邮箱:</label>
  17. <input type="mail">
  18. <br/>
  19. <input type="submit">
  20. </form>
  21. <?php
  22. // 自已创建一个操作的异常类
  23. class demoException extends Exception
  24. {
  25. public function __toString()
  26. {
  27. return <<< DBE
  28. <style>
  29. table {border-collapse: collapse;border:1px solid black;text-align: center;}
  30. td {border:1px solid black;padding: 5px;}
  31. tr:first-of-type {background-color:#eee;}
  32. tr:last-of-type td {color: coral;}
  33. </style>
  34. <table>
  35. <tr><td>代码</td><td>信息</td><td>文件</td><td>行号</td></tr>
  36. <tr><td>$this->code</td><td>$this->message</td><td>$this->file</td><td>$this->line</td></tr>
  37. </table>
  38. DBE;
  39. }
  40. }
  41. // 异常处理
  42. try
  43. {
  44. throw new demoException('输入邮箱错误!',101);
  45. }catch (demoException $e){
  46. echo $e;
  47. }
  48. echo '<hr>';
  49. ?>
  50. </body>
  51. </html>

实例效果

总结:
1.序列化和反序列化可用于数据的保存、传输,比如数据库连接参数的保存和传输,实现自动连接数据库的功能。
序列化 调用 sleep()
反序列化 调用
wakeup()
2.__tostring在异常处理中可自定义出错信息。
我不清楚如何产生表单输入错误,并捕抓错误信息,我尝试输入不带@的邮箱,但没有错误信息,只能使用throw 语句模拟错误信息。

批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:多尝试是对的
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学