Blogger Information
Blog 29
fans 0
comment 0
visits 27330
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP基础:interface接口与trait组件基础
暴宇
Original
936 people have browsed it

PHP基础:interface接口与trait组件基础

1.interface接口基础

interface接口相当于设计/抽象类,可将顶层设计代码放入interface接口中,再通过工作类的继承将其实现,接口不能被实例化,只能被继承。

  1. interface iface{
  2. // 接口常量:用关键字const声明
  3. const MY='接口常量值';
  4. // 接口方法
  5. public function ifun();
  6. }
  7. // 实现(工作类),用关键字implements继承接口
  8. class job implements iface{
  9. public $myname='工作类属性值';
  10. public function ifun(){
  11. return '工作类中实现的接口方法:'.__FUNCTION__;
  12. }
  13. }
  14. // 实例化工作类
  15. $job=new job;
  16. // 访问接口常量
  17. echo '访问接口常量:',iface::MY,'<hr>';
  18. // 访问工作类中的属性
  19. echo '访问工作类中的属性:',$job->myname,'<hr>';
  20. // 访问在工作类中实现的接口方法
  21. echo '访问在工作类中实现的接口方法:',$job->ifun(),'<hr>';

2.trait组件基础

trait是一种很特殊的类,不能被实例化,也不能继承,只能嵌入其他类中,使用use关键字引入/嵌入其他类中,相当于是一个代码组件,哪里需要它就use它。

  1. trait tClass
  2. {
  3. // 常规属性及方法
  4. public $tname = '常规属性';
  5. public function tfun()
  6. {
  7. return 'trait中的常规方法:'.__FUNCTION__;
  8. }
  9. // 静态属性及方法
  10. public static $stname = '静态属性';
  11. public static function stfun()
  12. {
  13. return 'trait中的静态方法:'.__FUNCTION__;
  14. }
  15. // 抽象
  16. // 抽象静态属性
  17. public static $cstname;
  18. // 抽象静态方法
  19. abstract public static function cstfun();
  20. }
  21. // trait相当于组件,可以直接引用或嵌入到其他的类中
  22. class Classname1
  23. {
  24. // 类中使用trait , 用use 关键
  25. use tClass;
  26. // 抽象静态方法实现
  27. public static function cstfun(){
  28. return '实现trait中的抽象静态方法:'.__FUNCTION__;
  29. }
  30. // 在类内无法直接给trait中的抽象静态属性赋值?
  31. }
  32. class Classname2
  33. {
  34. // 类中使用trait , 用use 关键
  35. use tClass;
  36. // 抽象静态方法实现
  37. public static function cstfun(){
  38. return '实现trait中的抽象静态方法:'.__FUNCTION__;
  39. }
  40. // 在类内无法直接给trait中的抽象静态属性赋值?
  41. }
  42. // 实例化
  43. $Class1=new Classname1;
  44. // 给抽象静态属性赋值
  45. Classname1::$cstname='在类外给trait抽象静态属性赋的值1';
  46. echo $Class1->tname,'<hr>';
  47. echo $Class1->tfun(),'<hr>';
  48. echo $Class1::$stname,'<hr>';
  49. echo $Class1::stfun(),'<hr>';
  50. echo $Class1::$cstname,'<hr>';
  51. echo $Class1::cstfun(),'<hr>';
  52. // 实例化
  53. $Class2=new Classname2;
  54. // 给抽象静态属性赋值
  55. Classname2::$cstname='在类外给trait抽象静态属性赋的值2';
  56. echo $Class2->tname,'<hr>';
  57. echo $Class2->tfun(),'<hr>';
  58. echo $Class2::$stname,'<hr>';
  59. echo $Class2::stfun(),'<hr>';
  60. echo $Class2::$cstname,'<hr>';
  61. echo $Class2::cstfun(),'<hr>';

总结

1.interface接口不能被实例化,只能被继承。

2.trait不能被实例化,也不能继承,只能用use关键字引入/嵌入其他类中。

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:所有作业必须在6月10日前完成
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