php面向对象的接口,PHP面向对象之接口编程
这两天在看一些关于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面向对象之接口编程相关推荐
- Java模式设计卖电脑实验报告,面向对象(Java)实验0继承、接口和多态
<面向对象(Java)实验0继承.接口和多态>由会员分享,可在线阅读,更多相关<面向对象(Java)实验0继承.接口和多态(11页珍藏版)>请在金锄头文库上搜索. 1.电子信息 ...
- 【小白学java】java的面向对象设计:封装+继承+抽象类+接口(day06)
课程链接:共六天 第一天:开发环境:初识java,搭建环境 第二天:语言基础:关键字.变量.常量.运算符 第三天:数据结构:基本类型.包装类型.引用类型(数组和对象) 第四天:流程控制:分支判断.循环 ...
- Java面向对象那些事之抽象类、接口
目录 前言 一.抽象类 1.抽象类概述 2. 抽象类特点 3.抽象类成员特点 4.抽象类案例 二.接口 1.接口概述 2.接口特点 3.接口成员特点 4.接口案例 5.类和接口的关系 6.抽象类和接口 ...
- Java面向对象(3) —— 抽象类、接口、内部类、匿名内部类
目录 抽象类(abstract) 抽象类的使用方法 抽象类的应用:模板方法模式 接口 接口的概念 接口的特点 接口的使用 接口实现与抽象类继承的区别 接口的多继承 内部类 概念 成员内部类(使用较多) ...
- JAVA面向对象-----接口与类、接口之间的关系
接口与类.接口之间的关系 大家之前都知道类与类之间的关系继承,那么接口与类之间又是怎样子的关系呢? 接口与类之间是实现关系.非抽象类实现接口时,必须把接口里面的所有方法实现.类实现接口用关键字impl ...
- JAVA面向对象OOP多态→抽象类abstract、接口interface实现implement、final不变修饰符、样例代码
抽象类 抽象类-接口关系示意图 如果一个类实现接口,就要把接口中所有的抽象方法都重写. A接口继承另一个B接口时,类要重写AB两个接口的方法 如果只是实现部分接口,可以用抽象类实现. 抽象类与接口不同 ...
- 为何 Map接口不继承Collection接口
1.首先Map提供的是键值对映射(即Key和value的映射),而collection提供的是一组数据(并不是键值对映射). 如果map继承了collection接口,那么所有实现了map接口的类到底 ...
- 什么是对象,为什么要面向对象,怎么才能面向对象?
一. 面向对象,这个对象到底是什么? 这个对象不是C#中的实例,C#中我们把一个类的实例也叫做对象,这种对象严格的说应该是面向对象的编程实现(OOP)中的对象,面向对象编程,也不是面 向类的实例编程. ...
- wordvba编程代码大全_面向对象、设计原则、设计模式、编程规范、重构
面向对象.设计原则.设计模式.编程规范.重构 面向对象 主流的三个编程风格有:面向对象,面向过程,函数式编程. 面向对象是最主流的风格,面向对象具有丰富的特性(封装,抽象,继承,多态). 面向对象 面 ...
最新文章
- nero linux iso,NeroLINUX下载_NeroLINUX官方下载_NeroLINUX4.0.0.0-华军软件园
- 总结jenkins Android自动打包遇到的坑
- linux下eaccelerator,memcache,memcached安装
- LCD显示异常分析——开机闪现花屏【转】
- 安卓一个方法多处调用_一个隐藏在方法集和方法调用中且易被忽略的小细节
- professor xi‘s story
- C# 中对象与JSON字符串相互转换的三种方法
- 跟我学 Java 8 新特性之 Stream 流(六)收集
- 【计算机科学基础】数据运算
- 什么是https,和ssl什么关系,为什么用https
- adalm pluto_Apache Pluto Portlet&Struts 2集成示例教程
- JDK 8.0 新特性——接口默认方法与静态方法
- Java爬虫学习——实例:获取起点中文网站小说并保存成txt文件
- diskgenius扩容c盘重启电脑卡住_无损扩容分区
- Simulink 环境基础知识(五)--编程建模基础知识
- 用彩信模块发图片问题总结(STM32)
- win10右键一直卡死解决记录
- 《极简GDP史》精髓:GDP虽有诸多局限性,但是对于社会经济发展仍然有举足轻重的作用
- 高中计算机专业班主任工作总结,大学班主任工作总结5篇
- AFNetworking2.4.1解析