博主信息
博文 29
粉丝 0
评论 0
访问量 36194
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PHP基础:interface接口与trait组件基础
暴宇
原创
1613人浏览过

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关键字引入/嵌入其他类中。

批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:所有作业必须在6月10日前完成
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学