Blogger Information
Blog 36
fans 0
comment 0
visits 28235
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
Trait使用案例
phpcn_u202398
Original
637 people have browsed it

1、trait同名方法冲突解决方案

  • 使用 insteadof 操作符来明确指定使用冲突方法中的哪

  • as 操作符可以 为某个方法引入别名。

    注意as 操作符不会对方法进行重命名,也不会影响其方法

    代码实例
    1. <?php
    2. //trait组合的同命名方法解决方案
    3. trait tUser1
    4. {
    5. public function getName(){
    6. return $name = "李明";
    7. }
    8. }
    9. trait tUser2
    10. {
    11. public function getName()
    12. {
    13. return $name = "李华";
    14. }
    15. }
    16. trait tUser3
    17. {
    18. use tUser1,tUser2 {
    19. tUser1::getName insteadOf tUser2;
    20. //
    21. tUser2::getName as tU2;
    22. }
    23. }
    24. //工作类
    25. class Infor {
    26. use tUser3;
    27. }
    28. $infor = new Infor();
    29. echo $infor -> getName();
    30. echo"<hr>";
    31. echo $infor -> tU2();
    32. ?>

    2、trait改变trait成员的访问控制

    代码实例
  1. <?php
  2. //trait组合的同命名方法解决方案
  3. trait tUser1
  4. {
  5. public function getName(){
  6. return $name = "李明";
  7. }
  8. }
  9. trait tUser2
  10. {
  11. public function getName()
  12. {
  13. return $name = "李华";
  14. }
  15. }
  16. trait tUser3
  17. {
  18. use tUser1,tUser2 {
  19. tUser1::getName insteadOf tUser2;
  20. tUser2::getName as tU2;
  21. }
  22. //修改访问控制
  23. use tUser1{getName as private tU1;}
  24. }
  25. //工作类
  26. class Infor {
  27. use tUser3;
  28. }
  29. $infor = new Infor();
  30. echo $infor -> tU1();
  31. echo"<hr>";
  32. echo $infor -> tU2();
  33. ?>

3、trait的优缺点

  • 优点:代码复用

  • 缺点:由于一个类里面可以引入多个trait,很可能会出现多个trait里面命名冲突的问题

4、trait与接口

代码实例
  1. <?php
  2. //接口
  3. interface iUser1
  4. {
  5. public static function getName();
  6. }
  7. //实现接口
  8. trait tUser1
  9. {
  10. public static function getName(){
  11. return $name="李明" ;
  12. }
  13. }
  14. //工作类
  15. class Infor implements iUser1{
  16. use tUser1;
  17. public static function getSex(){
  18. return $sex = "男";
  19. }
  20. }
  21. $sex = Infor::getSex();
  22. $infor = new Infor();
  23. echo $infor -> getName()."-->" . $sex ;
  24. ?>

学习总结

本节课我们学习trait的使用,通过本节课的学习了解了同一个类中引用多个trait同名冲突的解决方案以及trait访问控制的改变。本节课学习的不足之处在于对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