热门标签 | 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什么时候使用接口的相关内容别忘了在本站进行查找喔。


推荐阅读
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
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社区 版权所有