博主信息
博文 24
粉丝 0
评论 12
访问量 20107
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
静态绑定,拦截器作业
移动用户-5435854
原创
601人浏览过

5月1日作业
将本周的学习重点,如继承, 抽象类, trait笔记整理好
实例演示后期静态绑定的原理与实现
实例演示属性重载/拦截器的所有方法
实例演示方法重载/拦截器的所有方法
[选做]仿写课堂上的数据查询构造器, 多写几个方法试试看

  1. <?php
  2. abstract class work
  3. {
  4. public static function create() :self
  5. {
  6. return new static();
  7. }
  8. }
  9. class demo1 extends work
  10. {
  11. }
  12. class demo2 extends work
  13. {
  14. }
  15. $demo1= demo1::create();
  16. var_dump($demo1);
  17. echo '<br>';
  18. $demo2= demo2::create();
  19. var_dump($demo2);

属性查询拦截器

  1. class work
  2. {
  3. private $a;
  4. private $b;
  5. public function __construct($a,$b)
  6. {
  7. $this->a=$a;
  8. $this->b=$b;
  9. }
  10. public function __get($property)
  11. {
  12. return $this->$property;
  13. }
  14. }
  15. $work= new work('我是a','我是b');
  16. echo $work->a;
  17. echo $work->b;

属性检测拦截器

  1. class work
  2. {
  3. private $a;
  4. private $b;
  5. public function __construct($a,$b)
  6. {
  7. $this->a=$a;
  8. $this->b=$b;
  9. }
  10. public function __set($property,$value)
  11. {
  12. $method='get'.ucfirst($property);
  13. return method_exists($this,$method)?$this->$method():null;
  14. }
  15. public function seta($value)
  16. {
  17. return mb_substr($this->a,0,2);
  18. }
  19. public function setb($value)
  20. {
  21. return $this->b;
  22. }
  23. public function __isset($property)
  24. {
  25. return $property==='a'?isset($this->a):false;
  26. }
  27. }
  28. $work= new work('我是a','我是b');
  29. echo $work->a='我是a';
  30. echo $work->b ='我是b';
  31. echo '<br>';
  32. echo isset($property->a)?'存在':'不存在';

静态方法拦截器和方法拦截器

  1. <?php
  2. class user
  3. {
  4. public function __call($name,$args)
  5. {
  6. printf('方法名:%s是,参数:[%s]',$name,implode(',',$args));
  7. }
  8. public static function __callStatic($name, $arguments)
  9. {
  10. printf('方法名:%s是,参数:[%s]',$name,implode(',', $arguments));
  11. }
  12. }
  13. $user =new user();
  14. $user->demo(1,2,3,4);
  15. echo '<br>';
  16. $user::demo(1,2,3,4);

感想:已经讲到上传文件了,刚开始学拦截器,有点跟不上了。而且也做不到举一反三,只能先模拟老师的了。感觉还是挺难的。希望自己能坚持下来。黎明前的黑暗?

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

批改状态:合格

老师批语:先跟上进度, 作业可以慢慢再写, 直播的效果不是录播可以比拟的, 尽可能上直播
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
1条评论
移动用户-5435854 2020-05-20 20:12:25
好的,谢谢朱老师
1楼
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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

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