批改状态:合格
老师批语:是不是一开始觉得php应该比较简单就选了它, 现在发现之前学了一个假php , 其实一门编程语言,成为生产力工具, 一定有它的过人之处的... 加油
替换:使用 insteadof 操作符来明确指定使用冲突方法中的哪一个。别名:使用as操作符为同名中的其中一个方法引入别名。注意,as 操作符不是对方法进行重命名,也不会影响其方法。修改trait成员的访问控制。
trait tH1{public function ds(){return $name = '100-apples';}}trait tH2{public function ds(){return $name = '100-apples';}}trait tH3{use tH1, tH2 {tH1::ds insteadOf tH2;//指定用tH2的方法tH2::ds as nd2;//指定tH在执行时使用td2这个名字}use tH1 {ds as public td1;}//还可以修改trait成员的访问控制,但是public若修改为protected则会出现错误}class myclass{use tH3;}$myclass = new myclass();echo $myclass->ds();echo '<hr>';echo $myclass->nd2();echo '<hr>';echo $myclass->td1();

trait He {public function fHe() {echo '我和我的祖国!';}}class MyC1 {use He;}// 修改 sayHello 的访问控制class MyC2 {use He { fHe as protected; }//因为可见性变为受保护,所以打印不出}// 给方法一个改变了访问控制的别名class MyC3 {use He { fHe as private prifHe; }//因为可见性变为私有,所以打印不出}$MyC1 = new MyC1();$MyC2 = new MyC2();$MyC3 = new MyC3();echo $MyC1->fHe();echo $MyC2->fHe();echo $MyC3->fHe();
减少了代码的复杂性。弥补了PHP单继承的缺陷。单个trait可以有多个trait组成。在单个class中,可以使用多个trait。
trait会覆盖调用类继承的父类方法。trait无法像Class一样使用new实例化。
制作变色方块的思路:
html做方块。CSS设置样式。定义一个接口,生成唯一的ID。用trait实现接口方法。定义一个类class来继承接口。用xplode将颜色分配给方块。点击鼠标刷新页面,方块会翻转并且变色。(觉得这个小实验如果用JS会不会更方便实现呢?)
真切地感受到什么叫做“眼高手低”,一方面是因为知识还没有学完全,另一方面想的出来却做不出来,真是捉急呀。后面专门发一篇博文来补上这个小实践。复习去。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号