这两天在看一些关于PHP接口方面的资料,总结如下:

一、接口的定义和作用:

1、定义:接口规定了那些实现它的类,是抽象类的实体,其方法必须被全部实现。

使用方法如下:

interface employee{

public function working();

}

class teacher implements employee{

public function working(){

echo 'teaching',PHP_EOL;

}

}

class coder implements employee{

public function working(){

echo 'coding',PHP_EOL;

}

}

function print_object(employee $i){

$i->working();

}

$a = new teacher();

$b = new coder();

print_object($a);

print_object($b);

?> 2、作用:接口起强制规范和契约的作用,不允许调用接口中本不存在的方法。接口的编写和实现可以分开。

二、PHP的接口

php是弱类型语言,强调灵活,不推荐大规模使用接口,因为PHP的接口失去了一些接口应该有的特性,比如PHP只关心是否实现了这个方法,而不关心语义是否正确。

三、一些特例:

Iterator迭代器接口,只要实现了这个接口,就可以使对象用于foreach结构,如DirectoryIterator类。

代码如下:

$dir = new DirectoryIterator(dirname(__FILE__));

foreach ($dir as $key => $value) {

if(!$value->isDir()){

echo $value->getFileName(),"\t",$value->getSize(),"
";

}

}     Trait可以被视为一种加强型的接口。代码如下:

trait Hello{

public function sayHello(){

echo "Hello ";

}

}

trait World{

public function sayWorld(){

echo "World";

}

}

class MyHelloWorld

{

use Hello,World;

public function sayExclamationMark(){

echo "!";

}

}

$myobject = new MyHelloWorld();

$myobject->sayHello();

$myobject->sayWorld();

$myobject->sayExclamationMark(); 四、总结

接口作为一种规范和契约存在,保证可用性和可控性。

接口是一个声明,使用了该接口就必须实现它。

PHP的接口存在两个不足,一是没有契约限制,二是缺少足够多的内部接口。

php面向对象的接口,PHP面向对象之接口编程相关推荐

  1. Java模式设计卖电脑实验报告,面向对象(Java)实验0继承、接口和多态

    <面向对象(Java)实验0继承.接口和多态>由会员分享,可在线阅读,更多相关<面向对象(Java)实验0继承.接口和多态(11页珍藏版)>请在金锄头文库上搜索. 1.电子信息 ...

  2. 【小白学java】java的面向对象设计:封装+继承+抽象类+接口(day06)

    课程链接:共六天 第一天:开发环境:初识java,搭建环境 第二天:语言基础:关键字.变量.常量.运算符 第三天:数据结构:基本类型.包装类型.引用类型(数组和对象) 第四天:流程控制:分支判断.循环 ...

  3. Java面向对象那些事之抽象类、接口

    目录 前言 一.抽象类 1.抽象类概述 2. 抽象类特点 3.抽象类成员特点 4.抽象类案例 二.接口 1.接口概述 2.接口特点 3.接口成员特点 4.接口案例 5.类和接口的关系 6.抽象类和接口 ...

  4. Java面向对象(3) —— 抽象类、接口、内部类、匿名内部类

    目录 抽象类(abstract) 抽象类的使用方法 抽象类的应用:模板方法模式 接口 接口的概念 接口的特点 接口的使用 接口实现与抽象类继承的区别 接口的多继承 内部类 概念 成员内部类(使用较多) ...

  5. JAVA面向对象-----接口与类、接口之间的关系

    接口与类.接口之间的关系 大家之前都知道类与类之间的关系继承,那么接口与类之间又是怎样子的关系呢? 接口与类之间是实现关系.非抽象类实现接口时,必须把接口里面的所有方法实现.类实现接口用关键字impl ...

  6. JAVA面向对象OOP多态→抽象类abstract、接口interface实现implement、final不变修饰符、样例代码

    抽象类 抽象类-接口关系示意图 如果一个类实现接口,就要把接口中所有的抽象方法都重写. A接口继承另一个B接口时,类要重写AB两个接口的方法 如果只是实现部分接口,可以用抽象类实现. 抽象类与接口不同 ...

  7. 为何 Map接口不继承Collection接口

    1.首先Map提供的是键值对映射(即Key和value的映射),而collection提供的是一组数据(并不是键值对映射). 如果map继承了collection接口,那么所有实现了map接口的类到底 ...

  8. 什么是对象,为什么要面向对象,怎么才能面向对象?

    一. 面向对象,这个对象到底是什么? 这个对象不是C#中的实例,C#中我们把一个类的实例也叫做对象,这种对象严格的说应该是面向对象的编程实现(OOP)中的对象,面向对象编程,也不是面 向类的实例编程. ...

  9. wordvba编程代码大全_面向对象、设计原则、设计模式、编程规范、重构

    面向对象.设计原则.设计模式.编程规范.重构 面向对象 主流的三个编程风格有:面向对象,面向过程,函数式编程. 面向对象是最主流的风格,面向对象具有丰富的特性(封装,抽象,继承,多态). 面向对象 面 ...

最新文章

  1. nero linux iso,NeroLINUX下载_NeroLINUX官方下载_NeroLINUX4.0.0.0-华军软件园
  2. 总结jenkins Android自动打包遇到的坑
  3. linux下eaccelerator,memcache,memcached安装
  4. LCD显示异常分析——开机闪现花屏【转】
  5. 安卓一个方法多处调用_一个隐藏在方法集和方法调用中且易被忽略的小细节
  6. professor xi‘s story
  7. C# 中对象与JSON字符串相互转换的三种方法
  8. 跟我学 Java 8 新特性之 Stream 流(六)收集
  9. 【计算机科学基础】数据运算
  10. 什么是https,和ssl什么关系,为什么用https
  11. adalm pluto_Apache Pluto Portlet&Struts 2集成示例教程
  12. JDK 8.0 新特性——接口默认方法与静态方法
  13. Java爬虫学习——实例:获取起点中文网站小说并保存成txt文件
  14. diskgenius扩容c盘重启电脑卡住_无损扩容分区
  15. Simulink 环境基础知识(五)--编程建模基础知识
  16. 用彩信模块发图片问题总结(STM32)
  17. win10右键一直卡死解决记录
  18. 《极简GDP史》精髓:GDP虽有诸多局限性,但是对于社会经济发展仍然有举足轻重的作用
  19. 高中计算机专业班主任工作总结,大学班主任工作总结5篇
  20. AFNetworking2.4.1解析

热门文章

  1. 2017.3.29 报表统计 思考记录
  2. java oauth2搭建_Spring Security 实战干货:OAuth2授权请求是如何构建并执行的
  3. django本地安装mysql_Ununtu 15.04 安装MySql(Django连接Mysql)
  4. strace 简单用法
  5. Linux下 JNI的使用
  6. 漫画:一位文科生的编程之路。
  7. XmlReader 使用
  8. Linux下安装配置Jenkins
  9. 2_C语言中的数据类型 (六)浮点数
  10. Linux救援模式实战