博客列表 >面向对象——sleep()、wakeup()和异常类

面向对象——sleep()、wakeup()和异常类

phpcn_u202398
phpcn_u202398原创
2020年05月06日 12:49:30791浏览

1、sleep(), wakeuup()实例

代码示例
  1. <?php
  2. abstract class User{
  3. protected $name = '李明';
  4. private $age = 30;
  5. }
  6. class Infor extends User{
  7. public $sex = '男';
  8. private $isStudent = false;
  9. protected static $nationality = '中国/CHINA';
  10. public function __get($name)
  11. {
  12. return $this->$name;
  13. }
  14. public function __sleep(): array
  15. {
  16. return ['name', 'sex', 'isStudent'];
  17. }
  18. public function __wakeup()
  19. {
  20. $this->age = 35;
  21. $this->sex = '保密';
  22. }
  23. }
  24. $infor = new Infor();
  25. echo "序列化--" . serialize($infor);
  26. echo "<hr>";
  27. $in = serialize($infor);
  28. echo "反序列化--" ;
  29. var_dump(unserialize($in));
  30. ?>

2、自定义异常类, 处理用户登录与验证

  • __toString() 方法用于一个类被当成字符串时应怎样回应
代码示例
  1. <?php
  2. class MyException extends Exception
  3. {
  4. public function __construct($message,$code){
  5. $this->code = $code;
  6. $this->message = $message;
  7. }
  8. //重写异常信息输出格式
  9. public function __toString()
  10. {
  11. return '登录失败!['.$this->code.']:'.$this->message;
  12. }
  13. }
  14. try{
  15. $username = $_POSt['username'];
  16. $password = $_POST['password'];
  17. if($username !='zcx123'){
  18. throw new MyException('用户名不存在',1);
  19. }elseif($password !='zcx123456'){
  20. throw new MyException('密码错误',2);
  21. }
  22. }catch(MyException $e){
  23. echo $e;
  24. }
  25. ?>

3、匿名函数

代码示例
  1. <?php
  2. interface iDb
  3. {
  4. public function __construct(...$params);
  5. }
  6. $res = (new class ('mysql:host=localhost;dbname=forum', 'root', 'root') implements iDb {
  7. private $db = null;
  8. public function __construct(...$params)
  9. {
  10. $this->db = new PDO($params[0],$params[1],$params[2]);
  11. }
  12. public function select($where="")
  13. {
  14. $where = empty($where) ? '' : ' WHERE ' . $where;
  15. return $this->db
  16. ->query('SELECT uId,uName FROM tb1_user ' . $where . ' LIMIT 4')
  17. ->fetchAll(PDO::FETCH_ASSOC);
  18. }
  19. }
  20. )->select();
  21. printf('<pre>%s</pre>', print_r($res, true));

学习总结

本节课我们学习了sleep()、wakeup()、异常类和匿名函数。通过反复看视频和参考其他同学的作业对异常类知识基本了解,还需要后期的实战来强化。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议