博主信息
博文 26
粉丝 0
评论 0
访问量 25647
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
__sleep()、__wakeup() 魔术方法与异常处理
雪~人胖胖
原创
1520人浏览过

1. __sleep()与__wakeup()

  1. //__sleep():当序列化的时候自动调用
  2. //__wakeup():当反序列化的时候自动调用
  3. class Product
  4. {
  5. public $name;
  6. private $price,$sum;
  7. public function __construct($name,$price,$sum)
  8. {
  9. $this->name=$name;
  10. $this->price=$price;
  11. $this->sum=$sum;
  12. }
  13. //序列化时自动调用,return array()返回序列化的值
  14. public function __sleep()
  15. {
  16. return array('sum','price');
  17. }
  18. //反序列化时自动调用
  19. public function __wakeup()
  20. {
  21. $this->total=$this->price*$this->sum;
  22. }
  23. }
  24. $product=new Product('手机',1000,3);
  25. $res = serialize($product); //序列化
  26. $str = unserialize($res); //反序列化
  27. printf('<pre>%s</pre>',print_r($str,true));

图例


2.异常处理类

自定义异常类

  1. <?php
  2. class CustomException extends Exception
  3. {
  4. public function __toString()
  5. {
  6. return '错误提醒:'.$this->message.'<br>'.'代码异常:'.$this->code;
  7. }
  8. }
  9. class Custom
  10. {
  11. public $admin;
  12. public function __construct($admin)
  13. {
  14. $this->admin = $admin;
  15. }
  16. }
  17. try
  18. {
  19. $custom = new Custom('12345678qq.com');
  20. if(!filter_var($custom->admin,FILTER_VALIDATE_EMAIL))
  21. {
  22. throw new CustomException('邮箱格式不正确',30);
  23. }else
  24. {
  25. echo '验证成功';
  26. }
  27. }
  28. catch(CustomException $e)
  29. {
  30. echo $e;
  31. }

匿名类

  1. var_dump((new class('user1','123')
  2. {
  3. public $admin,$password;
  4. public function __construct($admin,$password)
  5. {
  6. $this->admin = $admin;
  7. $this->password = $password;
  8. }
  9. }));

总结

了解了如何自定义一个异常, __sleep和__wakeup都用在对象的序列化操作,关于匿名类没有想到什么好的例子,只能写一个最简单的了。

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

批改状态:合格

老师批语:匿名类现在用得并不多, 最多是用在对象参数中
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系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+教程免费学