批改状态:合格
老师批语:先跟上进度, 作业可以慢慢再写, 直播的效果不是录播可以比拟的, 尽可能上直播
5月1日作业
将本周的学习重点,如继承, 抽象类, trait笔记整理好
实例演示后期静态绑定的原理与实现
实例演示属性重载/拦截器的所有方法
实例演示方法重载/拦截器的所有方法
[选做]仿写课堂上的数据查询构造器, 多写几个方法试试看
<?phpabstract class work{public static function create() :self{return new static();}}class demo1 extends work{}class demo2 extends work{}$demo1= demo1::create();var_dump($demo1);echo '<br>';$demo2= demo2::create();var_dump($demo2);
属性查询拦截器
class work{private $a;private $b;public function __construct($a,$b){$this->a=$a;$this->b=$b;}public function __get($property){return $this->$property;}}$work= new work('我是a','我是b');echo $work->a;echo $work->b;
属性检测拦截器
class work{private $a;private $b;public function __construct($a,$b){$this->a=$a;$this->b=$b;}public function __set($property,$value){$method='get'.ucfirst($property);return method_exists($this,$method)?$this->$method():null;}public function seta($value){return mb_substr($this->a,0,2);}public function setb($value){return $this->b;}public function __isset($property){return $property==='a'?isset($this->a):false;}}$work= new work('我是a','我是b');echo $work->a='我是a';echo $work->b ='我是b';echo '<br>';echo isset($property->a)?'存在':'不存在';
静态方法拦截器和方法拦截器
<?phpclass user{public function __call($name,$args){printf('方法名:%s是,参数:[%s]',$name,implode(',',$args));}public static function __callStatic($name, $arguments){printf('方法名:%s是,参数:[%s]',$name,implode(',', $arguments));}}$user =new user();$user->demo(1,2,3,4);echo '<br>';$user::demo(1,2,3,4);
感想:已经讲到上传文件了,刚开始学拦截器,有点跟不上了。而且也做不到举一反三,只能先模拟老师的了。感觉还是挺难的。希望自己能坚持下来。黎明前的黑暗?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号