php使用接口
A. php接口开发教程
PHP与大多数面向对象编程语言一样,不支持多重继承.也就是说每个类只能继承一个父类.为了解决这个问题,PHP引入了接口,接口的思想是指定了一个实现了该接口的类必须实现的一系列方法.接口是一种特殊的抽象类,抽象类又是一种特殊的类,所以接口也是一种特殊的类,为什么说接口是一种特殊的抽象类呢?如果一个抽象类里面的所有的方法都是抽象方法,那么我们就换一种声明方法使用“接口“;也就是说接口里面所有的方法必须都是声明为抽象方法,另外接口里面不能声明变量(但可声明常量constant),而且接口里面所有的成员都是public权限的。所以子类在实现的时候也一定要使用public权限实限。
声明一个类的时候我们使用的关键字是”class”,而接口一种特殊的类,使用的关键字是“interface”;
类的定义: class 类名{ … } ,接口的声明:interface 接口名{ …}
代码
代码
<?php
//定义一个接口使用interface关键字,“One”为接口名称
interface One
{
//定义一个常量
const constant = 'constant value';
//定义了一个抽象方法”fun1”
public function fun1();
//定义了抽象方法”fun2”
public function fun2();
}
?>
上例中定义了一个接口”one”,里面声明了两个抽象方法“fun1”和”fun2”,因为接口里面所有的方法都是抽象方法,所以在声明抽象方法的时候就不用像抽象类那样使用”abstract”这个关键字了,默认的已经加上这个关键字,另外在接口里边的”public”这个访问权限也可以去掉,因为默认就是public的,因为接口里所有成员都要是公有的,所在对于接口里面的成员我们就不能使用“private”的和”protected”的权限了,都要用public或是默认的。另外在接口里面我们也声明了一个常量“constant“, 因为在接口里面不能用变量成员,所以我们要使用const这个关键字声明。
因为接口是一种特殊的抽象类,里面所有的方法都是抽象方法,所以接口也不能产生实例对象; 它也做为一种规范,所有抽象方法需要子类去实现。
我们可以使用”extends”关键字让一个接口去继承另一个接口:
<?php
//使用”extends”继承另外一个接口
interface Two extends One
{
function fun3();
function fun4();
}
?>
而我们定义一接口的子类去实现接口中全部抽象方法使用的关键字是”implements”,而不是我们前面所说的”extends”;
代码
<?php
//使用“implements”这个关键字去实现接口中的抽象方法 接口和类之间
class Three implements One
{
function fun1()
{
…
}
function fun2()
{
…
}
}
//实现了全部方法,我们去可以使用子类去实例化对象了
$three=new Three();
?>
我们也可以使用抽象类,去实现接口中的部分抽象方法,但要想实例化对象,这个抽象类还要有子类把它所有的抽象方法都实现才行;
在前面我们说过,PHP是单继承的,一个类只能有一父类,但是一个类可以实现多个接口,就相当于一个类要遵守多个规范,就像我们不仅要遵守国家的法律,如果是在学校的话,还要遵守学校的校规一样;
<?php
//使用implements实现多个接口
class Four implemtns 接口一, 接口二, ….
{
//必须把所有接口中的方法都要实现才可以实例化对象。
}
?>
PHP中不仅一个类可以实现多个接口,也可以在继承一个类的同时实现多个接口, 一定要先继承类再去实现接口;
<?php
//使用extends继承一个类,使用implements实现多个接口
class Four extends 类名一 implemtns 接口一, 接口二, ….
{
//所有接口中的方法都要实现才可以实例化对象
………
}
?>
B. php 什么情况用接口和抽象类
php 用接口和抽象类的情况:
接口是一种协定,抽象类则相当于类模板。
使用抽象类,而不要使用接口来分离协定与实现。
如果需要提供多态层次结构的值类型,使用接口。
如果一个类型必须实现多个协定,或者协定适用于多种类型,使用接口。
虽然抽象类和接口都支持将协定与实现分离开来,但接口不能指定以后版本中的新成员,而抽象类可以根据需要添加成员以支持更多功能。
优先考虑定义类,而不是接口。
后面的问题你看明白了上面这些就有答案了,如果可以互相取代何必搞两个概念出来呢
C. php中使用接口实现工厂设计模式的代码
接口在php只能起到约束类的定义作用,虽不像c#/java那么直观,但基于oop的封装要求,使用接口可以提高程序的可扩展性,如实现代理设计模式。
复制代码
代码如下:
<?php
//人类接口
interface
IHuman
{
function
GetName();
}
//男人类,实现人类接口
class
ManClass
implements
IHuman
{
//获取姓名方法
public
function
GetName()
{
return
"I'm
man."."<br>";
}
}
//女人类,实现人类接口
class
WomanClass
implements
IHuman
{
//获取姓名方法
public
function
GetName()
{
return
"I'm
Woman."."<br>";
}
}
//类工厂,根据需要生产不同实例对象返回
class
ManFactory
{
//根据参数获取实例对象
public
function
GetIHuman($IHuman="man")
{
if($IHuman=="woman")
{
return
new
WomanClass();
}
else
if($IHuman=="man")
{
return
new
ManClass();
}
else
{
return
null;
}
}
//直接获取woman类
public
function
GetWoman()
{
return
new
WomanClass();
//return
new
ManClass();
}
//直接获取man类
public
function
GetMan()
{
return
new
ManClass();
}
}
$ManFactory=new
ManFactory();
$ManClass=$ManFactory->GetIHuman();
echo
$ManClass->GetName();
$IHuman=$ManFactory->GetIHuman("woman");
echo
$IHuman->GetName();
$Woman=$ManFactory->GetWoman();
echo
$Woman->GetName();
$Man=$ManFactory->GetMan();
echo
$Man->GetName();
?>
运行结果:
I'm
man.
I'm
Woman.
I'm
Woman.
I'm
man.
D. php中如何调用接口以及编写接口代码详解
可以用curl获取借楼的信息。
所谓接口,就是提供一个url,只要你满足它要求的参数,就能得到你要的数据。比如你拿到一个接口,带上所需的参数,复制到地址栏同样能得到。不过最好用程序得到。file_get_contents也可以用,不过有局限性。所以我建议用curl。给你一个函数,挺好用的。
function request($url,$https=true,$method='GET',$data=null){
$ch = curl_init();//初始化,得到资源
curl_setopt($ch, CURLOPT_URL,$url); //请求数据的路径
curl_setopt($ch, CURLOPT_HEADER,false);//是否输出头
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //不直接输出结果
//curl_setopt ($ch, CURLOPT_SAFE_UPLOAD, 0);//兼容php之后的版本
if($https){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //是否验证主机
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //是否进行证书验证
}
if($method=='POST'){
curl_setopt($ch, CURLOPT_POST, true); //POST传输
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //传输数据
}
$content_json = curl_exec($ch);
if ($content_json === false) {
return "网络请求出错: " . curl_error($ch);
}
curl_close($ch);
return $content_json;
}
E. php怎么调用其他网站提供的api 接口
在这里openUser.php相当于一个接口,其中get_user_list 是一个API(获取用户列表),讲求返回的数据类型为JSON格式。
需要在PHP代码中执行这条链接他就会返回。
GET方式的直接使用
$file_contents = file_get_content('http://localhost/openUser.php?act=get_user_list&type=json')
POST方式得用下面的。
$url = 'http://localhost/openUser.php?act=get_user_list&type=json';
$ch = acurl_init ();
acurl_setopt ( $ch, CURLOPT_URL, $url );
acurl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
acurl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, 10 );
acurl_setopt ( $ch, CURLOPT_POST, 1 ); //启用POST提交
$file_contents = curl_exec ( $ch );
F. php 怎么访问接口
统一的数据访问接口PDO
PDO(PHP Data Objects) 扩展为 PHP 访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,用户都可以通过统一的函数执行来查询和获取数据。注意,你并不能使用 PDO 扩展本身执行任何数据库操作,必须使用一个 database-specific PDO driver (针对特定数据库的 PDO 驱动)访问数据库服务器。
G. php中接口是如何应用的
interface IPillage{ function emptyBakAccount(); function burnDocument();}
H. 用php写个接口。
PHP 接口:
接口
使用接口(interface),你可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。
我们可以通过interface来定义一个接口,就像定义一个标准的类一样,但其中定义所有的方法都是空的。
接口中定义的所有方法都必须是public,这是接口的特性。
实现
要实现一个接口,可以使用implements操作符。类中必须实现接口中定义的所有方法,否则 会报一个fatal错误。如果要实现多个接口,可以用逗号来分隔多个接口的名称。
Note:
实现多个接口时,接口中的方法不能有重名。
Note:
接口也可以继承,通过使用extends操作符。
常量
接口中也可以定义常量。接口常量和类常量的使用完全相同。 它们都是定值,不能被子类或子接口修改。
I. 如何在PHP中调用接口
JavaScript Document
function show(str)
{
var str1="td"+str;
var str="show"+str;
for (var i=1; i<18; i++)
{
var obj = document.getElementById('show' + i.toString());
if (obj) obj.style.display = 'none';
}
document.getElementById(str).style.display="block";
}