博客列表 >PHP基础:trait方法命名冲突解决方案及修改访问控制

PHP基础:trait方法命名冲突解决方案及修改访问控制

暴宇
暴宇原创
2020年05月31日 22:06:461201浏览

PHP基础:trait方法命名冲突解决方案及修改访问控制

1.trait组合的同名方法命名冲突的解决方案

1.1指定默认执行(替代方式)
1.2给不同的组件方法起别名

  1. // 组件1
  2. trait t1
  3. {
  4. public function tfun()
  5. {
  6. return __TRAIT__ . ' 组件中的方法 ' . __METHOD__;
  7. }
  8. }
  9. // 组件2
  10. trait t2
  11. {
  12. public function tfun()
  13. {
  14. return __TRAIT__ . ' 组件中的方法 ' . __METHOD__;
  15. }
  16. }
  17. // 组件3(引入组件1和组件2)
  18. // 利用指定默认执行方法和别名的方式解决命名冲突
  19. trait t3
  20. {
  21. use t1, t2 {
  22. // 1. 替代(指定默认执行t1组件中的tfun方法,也可理解为用t1组件中的方法替代t2组件中的同名方法)
  23. t1::tfun insteadOf t2;
  24. // 2. 别名
  25. t2::tfun as td2;
  26. }
  27. }
  28. class jobClass{
  29. use t3;
  30. }
  31. $job=new jobClass;
  32. echo $job->tfun(),'<hr>';
  33. echo $job->td2(),'<hr>';

2.修改trait方法的访问控制

用as关键字修改trait方法的访问控制

  1. trait t4{
  2. // as: 还可以修改trait成员的访问控制
  3. use t1 {tfun as private td1;}
  4. }
  5. class jobClass{
  6. use t4;
  7. }
  8. $job=new jobClass;
  9. // echo $job->td1(),'<hr>';

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