Blogger Information
Blog 8
fans 0
comment 1
visits 11409
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
接口的理解与运用,trait的基本功能,代码复用
混混
Original
870 people have browsed it

1.接口实现完全实现设计与分定义接口类,从而解决php的多继承性

实例演示:

  1. <?php
  2. /**
  3. * 建立接口
  4. */
  5. interface iUser
  6. {
  7. const NAME='马云';
  8. }
  9. interface iUser2 extends iUser
  10. {
  11. const NAME2='阿里巴巴';
  12. }
  13. interface iUser3 extends iUser,iUser2
  14. {
  15. const NAME3='2000亿';
  16. }
  17. /**
  18. * 工作类的实现
  19. */
  20. class User implements iUser3
  21. {
  22. public function res()
  23. {
  24. return iUser2::NAME2.'的董事长'.iUser::NAME.'以总身价'.iUser3::NAME3.'蝉联中国首富!';
  25. }
  26. }
  27. $obj=new User();
  28. echo $obj->res();
  29. ?>

输出结果:

个人总结:之前完全没有接触过接口,没有办法举更好的实例来演示,理解接口的含义和运用,对应用场景和方法完全没有头绪。。。。。


2.trait

作用(1):实现了一种代码复用的方法,从而实现方法的多继承,与抽象类相似,但不能实例化

实例演示:

  1. <?php
  2. trait tUser
  3. {
  4. public function res()
  5. {
  6. $str=get_class_vars(__CLASS__);
  7. $val=printf('<pre>%s</pre>',print_r($str,true));
  8. // $key=implode('=>')
  9. }
  10. }
  11. class User1
  12. {
  13. use tUser;
  14. protected $name='马云';
  15. protected $res='阿里巴巴';
  16. protected $meny='2000亿';
  17. }
  18. class User2
  19. {
  20. use tUser;
  21. protected $name='马化腾';
  22. protected $res='腾讯';
  23. protected $meny='1800亿';
  24. }
  25. echo (new User1())->res();
  26. echo (new User2())->res();
  27. ?>

输出结果:


作用(2):在基类中具有先性,通过优先设置,降低单继承的影响性

实例演示:

  1. <?php
  2. trait tUser
  3. {
  4. public static function res()
  5. {
  6. return '这是tUser中的方法'.__METHOD__;
  7. }
  8. }
  9. class User
  10. {
  11. public static function res()
  12. {
  13. return '这是父类User中的方法'.__METHOD__;
  14. }
  15. }
  16. class User1 extends User
  17. {
  18. use tUser;
  19. public static function res()
  20. {
  21. return '这个是子类User1中的方法'.__METHOD__;
  22. }
  23. }
  24. echo (new User1())->res();
  25. ?>

输出结果:

注释子类中的方法:

  1. <?php
  2. trait tUser
  3. {
  4. public static function res()
  5. {
  6. return '这是tUser中的方法'.__METHOD__;
  7. }
  8. }
  9. class User
  10. {
  11. public static function res()
  12. {
  13. return '这是父类User中的方法'.__METHOD__;
  14. }
  15. }
  16. class User1 extends User
  17. {
  18. use tUser;
  19. // public static function res()
  20. // {
  21. // return '这个是子类User1中的方法'.__METHOD__;
  22. // }
  23. }
  24. echo (new User1())->res();
  25. ?>

输出结果:为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