设为首页收藏本站

IT技术擎 - 最棒的IT web技术交流社区

 找回密码
 注册为IT技术擎人

QQ登录

只需一步,快速开始

搜索
热搜: php h5 jquery
查看: 20|回复: 0

[未分类] PHP接口

[复制链接]

1万

主题

1万

帖子

5万

积分

版主

Rank: 7Rank: 7Rank: 7

积分
54371
发表于 2018-9-9 23:25:26 | 显示全部楼层 |阅读模式
PHP接口
PHP接口(
  1. interface
复制代码
)作用类似于继承中的父类,接口是用于给其他的类继承用的,但是接口中定义的方法都是没有方法体的且定义的方法必须是公有的。
举例:
  1. <?php interface iTemplate{ public function eat($food); public function learn($code); } class student implements iTemplate{ public function eat($food){ echo "student eat {$food} "; } public function learn($code){ echo "student learn {$code} "; } } $student = new student(); $student- >eat( &#39;apple &#39;); echo &#39; <br / > &#39;; $student- >learn( &#39;PHP &#39;);
  2. ? >
复制代码
输出:
  1. student eat apple
  2. student learn PHP
复制代码
接口中除了方法也是可以定义属性的,但必须是常量。
  1. <?php interface iTemplate{ public function eat($food); public function learn($code); const A= &#39;我是常量 &#39;; } class student implements iTemplate{ public function eat($food){ echo "student eat {$food} "; } public function learn($code){ echo "student learn {$code} "; } public function changliang(){ echo ITemplate::A; }
  2. } $student = new student(); $student- >eat( &#39;apple &#39;); echo &#39; <br / > &#39;; $student- >learn( &#39;PHP &#39;); echo &#39; <br / > &#39;; $student- >changliang();
  3. ? >
复制代码
输出:
  1. student eat apple
  2. student learn PHP
  3. 我是常量
复制代码
那么既然是定义给其他类使用,就存在继承的问题,接口是可以多继承的。
举例:
  1. <?php interface iTemplate1{ public function eat($food); } interface iTemplate2{ public function learn($code); } class student implements iTemplate1,iTemplate2{ public function eat($food){ echo "student eat {$food} "; } public function learn($code){ echo "student learn {$code} "; } } $student = new student(); $student- >eat( &#39;apple &#39;); echo &#39; <br / > &#39;; $student- >learn( &#39;PHP &#39;);
  2. ? >
复制代码
输出:
  1. student eat apple
  2. student learn PHP
复制代码
这样就在
  1. student
复制代码
类中继承了
  1. iTemplate1
复制代码
  1. iTemplate2
复制代码
接口,话可以先让
  1. iTemplate2
复制代码
接口继承
  1. iTemplate1
复制代码
接口,再让
  1. student
复制代码
类去继承
  1. iTemplate1
复制代码
接口,实现的效果同上。
举例:
  1. <?php interface iTemplate1{ public function eat($food); } interface iTemplate2 extends iTemplate1{ public function learn($code); } class student implements iTemplate2{ public function eat($food){ echo "student eat {$food} "; } public function learn($code){ echo "student learn {$code} "; } } $student = new student(); $student- >eat( &#39;apple &#39;); echo &#39; <br / > &#39;; $student- >learn( &#39;PHP &#39;);
  2. ? >
复制代码
输出:
  1. student eat apple
  2. student learn PHP
复制代码
总结一下:

  • 接口不能实例化
  • 接口中的方法不能有方法体
  • 继承接口的方法必须实现接口中的所有方法
  • 一个类可以继承多个接口
  • 接口中的属性必须是常量
  • 接口中的方法必须是public(默认public)

不对的地方还望dalao们指正。



上一篇:Pycharm下找不到sqlalchemy、pymysql的问题
下一篇:抽象类和接口的区别面试答案,很全面
该用户未在地球留下任何的痕迹

本版积分规则

QQ|小黑屋|帮助|IT技术擎 ( 沪ICP备15054863号  

GMT+8, 2018-11-19 06:42

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表