博客列表 >PHP:Trait与接口、抽象类的实战

PHP:Trait与接口、抽象类的实战

楷
原创
2020年05月03日 23:28:53838浏览

一、解决trait组合中的方法命名冲突

和改变访问控制方法

  1. <?php
  2. // 解决trait组合中的方法命名冲突
  3. trait tPrint1
  4. {
  5. public function printer()
  6. {
  7. return __TRAIT__ . ' => ' . __METHOD__;
  8. }
  9. }
  10. trait tPrint2
  11. {
  12. public function printer()
  13. {
  14. return __TRAIT__ . ' => ' . __METHOD__;
  15. }
  16. }
  17. trait tPrint3
  18. {
  19. use tPrint1,tPrint2
  20. {
  21. // 解决trait中同名函数冲突的方法:1.替换 intsteadof
  22. tprint1::printer insteadOf tprint2;
  23. // 2.别名 as
  24. tPrint2::printer as tp2;
  25. // 3.用as改变访问控制
  26. // tPrint2::printer as protected tp2 ;
  27. }
  28. }
  29. // 工作类
  30. class Work
  31. {
  32. use tPrint3;
  33. }
  34. // 客户端
  35. echo (new Work)->printer(),'<br>';
  36. echo (new work)->tp2();

实例效果

二、实例演示一个trait与接口,抽象类联合编程思路

初步思路:
1.创建一个接口
2.创建工作类
3.创建一个trait,实现接口方法
然后~
实在难为我了,为了不影响5月1日的作业,只好先提交半成品,日后补充。

总结:
1.trait组合同名函数冲突解决方法:
替换——insteadof
别名/改变访问控制——as
2.trait 实现接口方法的优点:把原先在工作类中实现的接口抽象方法,间接在trait中实现,给客户的工作类更加简洁。

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