热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php什么时候使用接口?

导读:今天编程笔记来给各位分享关于php什么时候使用接口的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览:

导读:今天编程笔记来给各位分享关于php什么时候使用接口的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:


  • 1、我们应该什么情况下使用继承,什么情况下用实例化,什么情况下使用一个接口 - PHP进阶讨论


  • 2、在PHP中,何时用抽象类,何时用接口


  • 3、什么时候你会使用到PHP接口


  • 4、请教:PHP的接口有什么用?我怎么一直都用不到,该在什么时候用哟?


  • 5、怎么在PHP中定义和使用接口interface


  • 6、php连接mysql为什么要用接口

我们应该什么情况下使用继承,什么情况下用实例化,什么情况下使用一个接口 - PHP进阶讨论

要使用继承的话,可以将两个类放到一个文件中,你这个父类只会有一个基类,这样也可以。继承不继承的对你这个来说,没什么大不了,你也可以直接扩展父类。个人观点,那些设计模式没必要生搬硬套,性能也很重要,如果不用那些设计模式,也可以很简便的达到目的的话,就不用。

在PHP中,何时用抽象类,何时用接口

我心情不好,想听歌,所以要找会唱歌的,这个时候你或者qq音乐,电视机,录音机等都可以,唱歌就是个接口。我不关心是个什么东东。

我心情不好,我要在电脑上找个播放器听歌,我可以选择的就有qq音乐,百度音乐,阿里音乐等。这个时候播放器就是个抽象类,我要这类东西。当然,播放器要实现唱歌的接口。

不过话又说回来,我大PHP,走的是极简路线,我们心情不好就直接用360音乐来治疗,从来就没考虑其他播放器,更别说什么找个明星现场唱,放个黑胶cd听之类的奢侈。

解决一个问题,可以无限复杂,也可无脑简单,我们要做的是,寻找一个一段时间内有脑而简洁的方式来实现,这说真的,真tmd难。

什么时候你会使用到PHP接口

很多了。但大体上是用于数据的传输,如:

APP,包括安卓和IOS

H5纯前端框架如VUE

后端请求,如CURL

请教:PHP的接口有什么用?我怎么一直都用不到,该在什么时候用哟?

接口interface是面向对象编程中一个很重要的概念和手段。

有什么用?接口将定义一系列抽象方法,并作为交换的标准。是实现程序低耦合和多态的一个措施。接口好比电气设备中美式插座和爱迪生E27螺旋灯口标准,所有的电器都使用2眼或3眼的插座,大多数的灯泡可以使用螺口灯座。就不需要担心电器、灯泡的具体类型。

一个对象也可以具有多个接口的特性(比如一个对象处理所有的输入,具备鼠标监听接口、键盘接口、触摸屏接口。一个插座可以有3眼,2眼的接口。)。而不用多重继承多种父类,使程序清晰。

什么时候用?以多个不同类型的对象作为模块间交换格式的时候,接口用于定义标准的交换方法。

简单说,就是定义(大、小、各种)“标准”时用接口定义。所以各种API(应用编程接口)同时也是开发对应的软件的标准库。在OOP中,接口和协议几乎是同义词。关键字是:标准,标准化。

如果还没有用到,说明代码潜在存在不够标准、杂糅在一起(高耦合)的情况,或者对象类型较少简单到不需要一个内部标准。

怎么在PHP中定义和使用接口interface

1、接口的定义:

接口:一种成员属性为抽象的特殊抽象类,在程序中同为规范的作用

2、其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类,那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这 个时候PHP接口类interface就起到作用了,当我们定义了一个接口类时,它里面的方式是下面的子类必须实现的,比如 :

interface Shop

{

public function buy($gid);

public function sell($gid);

public function view($gid);

}

我声明一个shop接口类,定义了三个方法:买(buy),卖(sell),看(view),那么继承此类的所有子类都必须实现这3个方法少一个都 不行,如果子类没有实现这些话,就无法运行。实际上接口类说白了,就是一个类的模板,一个类的规定,如果你属于这类,你就必须遵循我的规定,少一个都不 行,但是具体你怎么去做,我不管,那是你的事,如:

class BaseShop implements Shop { public function buy($gid) { echo('你购买了ID为 :'.$gid.'的商品'); } public function sell($gid) { echo('你卖了ID为 :'.$gid.'的商品'); } public function view($gid) { echo('你查看了ID为 :'.$gid.'的商品'); } }

结论 : PHP接口类interface就是一个类的领导者,指明方向,子类必须完成它指定方法。这样不同的开发者就不要去了解别人怎么命名相应的方法。

3、php中使用接口(interface)实现多重继承:

我们都知道PHP中的类(class)是单继承的,那是不是就没有办法实现多重继承了呢?答案是否定的.我们可以通过其它特殊的方式实现类的多重 继承,比如使用接口(interface)实现,只要把类的特征抽象为接口,并通过实现接口的方式让对象有多重身份,通过这样就可以模拟多重继承了。

下面是一个用接口(interface)实现多重继承的例子,源代码如下:

?php

interface UserInterface{ //定义User的接口

function getname();

}

interface TeacherInterface{ //teacher相关接口

function getLengthOfService();

}

class User implements UserInterface { //实现UserInterface接口

private $name = "tom";

public function getName(){

return $this-name;

}

}

class Teacher implements TeacherInterface { //实现TeacherInterface接口

private $lengthOfService = 5; // 工龄

public function getLengthOfService(){

return $this-lengthOfService;

}

}

// 继承自User类,同时实现了TeacherInterface接口.

class GraduateStudent extends User implements TeacherInterface {

private $teacher ;

public function __construct(){

$this-teacher = new Teacher();

}

public function getLengthOfService(){

return $this-teacher-getLengthOfService();

}

}

class Act{

//注意这里的类型提示改成了接口类型

public static function getUserName(UserInterface $_user){

echo "Name is " . $_user-getName() ."br";

}

//这里的类型提示改成了TeacherInterface类型.

public static function getLengthOfService(TeacherInterface $_teacher){

echo "Age is " .$_teacher-getLengthOfService() ."br";

}

}

$graduateStudent = new GraduateStudent();

Act::getUserName($graduateStudent);

Act::getLengthOfService($graduateStudent);

//结果正如我们所要的,实现了有多重身份的一个对象.

?

示例运行结果如下:

Name is tom

Age is 5

4、接口类和抽象类的区别

抽象类 :1.类中至少有一个抽象方法

2.前面加abstract

接口: 1.成员属性为常量const

2.前面不用加abstract

3.类中全部为抽象方法,接口抽象方法为public

5、接口类和抽象类 共同点:

1.本身不能被实例化,必须继承或者引用

2.继承和引用后,抽象方法必须重载才能实例化

关键字 interface.引用关键字 implements

php连接mysql为什么要用接口

php中连接MySQL数据库用到的接口定义如下:

?php

/*

* 建立连接, mysql_connect,打开一个到MySQL服务器的连接,

* 失败返回false,

* 成功返回一个MySQL连接标识

*/

$db = mysql_connect("127.0.0.1","root","root123");

if(!$db){

die('连接建立错误: ' . mysql_error());

}

if(!mysql_select_db("php")){//选择数据库,成功返回true,失败返回false

die('数据库选择错误: ' . mysql_error());

}

$insertSQL = "insert into php values(4,'phpinsert')";//插入语句

$updateSQL = "update php set name='updatephp' where id = 4";//修改语句

$deleteSQL = "delete from php where id = 2";

/*

* 发送一条MySQL查询,仅对SELECT,SHOW,EXPLAIN,DESCRIBE语句返回一个资源标识符,查询不正确则返回false,

* 对于其它类型的SQL语句,mysql_query()执行成功时返回true,出错时返回false。

* 非false的返回值代表查询时合法的并且能被服务器执行,但并不表示影响到的行数或返回的行数,

* 因为一条查询有可能执行成功了但并不返回或者影响到任何行。

*/

$insertresult = mysql_query($insertSQL);

if($insertresult != false){//查询成功

/*

* 取得最近一次与 link_identifier 关联的 INSERT,UPDATE 或 DELETE 查询所影响的记录行数。

* 执行成功则返回受影响的行的数目,如果最近一次查询失败的话,函数返回 -1。

*/

$number = mysql_affected_rows();

echo "插入影响行数:".$number."br /";

/*

* 取得上一步 INSERT 操作产生的 ID ,返回上一步 INSERT 查询中产生的 AUTO_INCREMENT 的 ID 号,

* 如果上一查询没有产生 AUTO_INCREMENT 的值,则 mysql_insert_id() 返回 0。

* 如果需要保存该值以后使用,要确保在产生了值的查询之后立即调用 mysql_insert_id()。

* 此处由于没有 AUTO_INCREMENT,所以返回0。

*/

echo mysql_insert_id()."br /";

}

$updateresult = mysql_query($updateSQL);

if($updateresult !=FALSE){//更新操作

$number = mysql_affected_rows();//大于0则成功

echo "更新影响行数:".$number."br /";

}

$deleteresult = mysql_query($deleteSQL);

if($deleteresult !=FALSE){//更新操作

$number = mysql_affected_rows(); //大于0则成功

echo "删除影响行数:".$number."br /";

}

mysql_close($db);//关闭连接,成功返回true,失败返回false。

?

结语:以上就是编程笔记为大家整理的关于php什么时候使用接口的全部内容了,感谢您花时间阅读本站内容,希望对您有所帮助,更多关于php什么时候使用接口的相关内容别忘了在本站进行查找喔。


推荐阅读
  • 使用nodejs爬取b站番剧数据,计算最佳追番推荐
    本文介绍了如何使用nodejs爬取b站番剧数据,并通过计算得出最佳追番推荐。通过调用相关接口获取番剧数据和评分数据,以及使用相应的算法进行计算。该方法可以帮助用户找到适合自己的番剧进行观看。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • PHP中的单例模式与静态变量的区别及使用方法
    本文介绍了PHP中的单例模式与静态变量的区别及使用方法。在PHP中,静态变量的存活周期仅仅是每次PHP的会话周期,与Java、C++不同。静态变量在PHP中的作用域仅限于当前文件内,在函数或类中可以传递变量。本文还通过示例代码解释了静态变量在函数和类中的使用方法,并说明了静态变量的生命周期与结构体的生命周期相关联。同时,本文还介绍了静态变量在类中的使用方法,并通过示例代码展示了如何在类中使用静态变量。 ... [详细]
  • 本文内容为asp.net微信公众平台开发的目录汇总,包括数据库设计、多层架构框架搭建和入口实现、微信消息封装及反射赋值、关注事件、用户记录、回复文本消息、图文消息、服务搭建(接入)、自定义菜单等。同时提供了示例代码和相关的后台管理功能。内容涵盖了多个方面,适合综合运用。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讲述了作者通过点火测试男友的性格和承受能力,以考验婚姻问题。作者故意不安慰男友并再次点火,观察他的反应。这个行为是善意的玩人,旨在了解男友的性格和避免婚姻问题。 ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
author-avatar
你还OK吗-_155
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有