Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:是不是一开始觉得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会不会更方便实现呢?)
真切地感受到什么叫做“眼高手低”,一方面是因为知识还没有学完全,另一方面想的出来却做不出来,真是捉急呀。后面专门发一篇博文来补上这个小实践。复习去。