批改状态:合格
老师批语:你可能发现了, trait, 抽象类, 接口, 都是要把工作类中与用户关联不大,或用户不必关心的部分抽出来放在其它地方实现, 这样用户就更专注自己的业务了, 明白这点就算是真正理解了这些技术的良苦用心
<?php// trait组合使用方法// 把多个trait引用到一个trait中,然后在工作类中只需引用一个trait就可以了// trait1trait tOne{public function one(){return __TRAIT__;}}// trait2trait tTwo{public function two(){return __FUNCTION__;}}// trait3trait tThree{public function three(){return __CLASS__;}}// 3个trait的集合trait tGather{use tOne,tTwo,tThree;}// 工作类class Dd{// 引用trait的集合 ,就能调用三个trait中成员use tGather;}$a = new Dd;echo $a->three();echo '<hr>';echo $a->two();echo '<hr>';echo $a->one();echo '<hr>';
// trait组合中的方法命名冲突解决方法// 替换// trait1trait tFout{public function one(){return __TRAIT__;}}// trait2trait tFive{public function one(){return __FUNCTION__;}}// 2个trait的集合trait tGather1{// 语法use tFout,tFive{// 替换:关键字:insteadOftFout::one insteadOf tFive;// 别名:关键字:astFout::one as fu;}// 访问控制符:关键字:as// 语法use tFout {one as protected one1;}}// 工作类class Db{use tGather1;}$b = new Db;echo $b->one();echo '<hr>';echo $b->fu();echo '<hr>';
// trait,接口,抽象类联合编程// 接口定义方法// trait实现接口中的抽象方法,打包在一起以供调用// 接口:定义抽象方法interface iA{public function bag();public function dag();}// trait:实现方法// trait可以只实现接口中一个方法trait tB{public function bag(){return __METHOD__;}}// 工作类:调用trait// 可以在其他类中调用trait,实现代码复用class C{use Tb;}$l = new C;echo $l->bag();
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号