导读:今天编程笔记来给各位分享关于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什么时候使用接口的相关内容别忘了在本站进行查找喔。