Blogger Information
Blog 24
fans 0
comment 12
visits 15578
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
Trait相关作业
移动用户-5435854
Original
788 people have browsed it

4月30日作业
Trait组合的同名方法的命名冲突的解决方案有哪些, 实例进行演示
演示如何在trait中改变trait成中的访问控制
trait 实现 接口方法的优点是什么? 分析一下有什么缺点(选做)
实例演示一个trait与接口,抽象类联合编程(如果实在想不出案例, 可以写出思路也行, 但绝对不允许抄课堂案例, 你懂的)

Trait组合的同名方法的命名冲突的解决方案有哪些, 实例进行演示,演示如何在trait中改变trait成中的访问控制

答:当trait同名的时候,有两种办法解决:
一种是把一个同名的替换,语法是insteadOf
另一种是用别名as,特别注意的是,as 还可以修改trait成员的访问控制

两种命名冲突的解决方案和trait中改变trait中的访问控制的方法演示如下:

  1. trait tceshi
  2. {
  3. public function ceshi()
  4. {
  5. return __TRAIT__ . ' => ' . __METHOD__;
  6. }
  7. }
  8. trait tceshi2
  9. {
  10. public function ceshi()
  11. {
  12. return __TRAIT__ . ' => ' . __METHOD__;
  13. }
  14. }
  15. trait tceshi3
  16. {
  17. use tceshi, tceshi2 {
  18. // 1. 替代
  19. tceshi::ceshi insteadOf tceshi2;
  20. // 2. 别名
  21. tceshi2::ceshi as td2;
  22. }
  23. // 演示如何在trait中改变trait成中的访问控制,原来是public,直接改成了protected
  24. use tceshi {ceshi as protected td1;}
  25. }
  26. // 工作类
  27. class Work
  28. {
  29. use tceshi3;
  30. }

trait 实现 接口方法的优点是什么? 分析一下有什么缺点(选做)

trait 实现接口的方法优点个人觉得是方便客户调用(trait就像软件的小插件?),估计以后框架中,会很多trait呀接口呀这种东西。相当于接口和trait都是集成的东西(实现某种功能)像积木一样,客户拿来直接就可以拼装了用了,直接实现一些客户想实现的功能,而且也便于团队协作使用同样的功能。省的张三使用一个功能就一点一点写一个,李四想要同样功能,也一点一点重复写一个。而是集成在那里,谁用谁就调用就可以了。个人拙见不知道对不对。
缺点暂时不知道,希望老师解惑。

实例演示一个trait与接口,抽象类联合编程(如果实在想不出案例, 可以写出思路也行, 但绝对不允许抄课堂案例, 你懂的)

皇上选妃案例

  1. <?php
  2. //选妃案例
  3. $girls = ['西施', '东施', '李师师', '贾玲', '貂蝉', '如花'];
  4. // 接口
  5. interface iCreateId
  6. {
  7. // 删选出唯一妃子
  8. public static function generateId(int $min, int $max):int;
  9. }
  10. // trait: 实现选妃方法
  11. trait createId
  12. {
  13. public static function generateId(int $min, int $max):int
  14. {
  15. return mt_rand($min, $max);
  16. }
  17. }
  18. // 实现今晚翻牌规则
  19. class DrawPrize implements iCreateId
  20. {
  21. use createId;
  22. public static function fanpan(array $girls, int $id)
  23. {
  24. return $girls[$id];
  25. }
  26. }
  27. //皇上开始选
  28. $id = DrawPrize::generateId(0,5);
  29. $Tonight = DrawPrize::fanpan($girls, $id);
  30. printf('皇上!今晚侍寝的是: <span style="color:red">%s</span>', $Tonight);

感想:

从trait开始正式进入天书模式,大量所学的知识扑面而来,以前的知识不牢固造成了头脑中很多问号。我靠,太恐怖了,好久没有想哭的感觉了。感觉快跟不上了。从来没这么焦虑过。

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:看来你之前学了一个假对象
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post