博客列表 >Trait相关作业

Trait相关作业

移动用户-5435854
移动用户-5435854原创
2020年05月01日 18:41:50779浏览

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

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议