PHP的接口:为了实现特定功能而预留的类似类的一种类型。接口的主要目的:提供给类类似于模板的框架,以方便类的构建。
在PHP中定义接口
在PHP中定义接口的形式如下:
Interface interfaceName
{
Const 1;
……
Const 2;
Function methodName1();
……
Function methodName2();
}
PHP中单一接口的实现
实现接口的语法如下:
Class class_name implements interface_name
例如:
<?php
interface staff_i1 //接口1
{
function setID();
function getID();
}
interface staff_i2 //接口2
{
function setName();
function getName();
}
class staff implements staff_i1,staff_i2
{
private $id;
private $name;
function setID($id)
{
$this->id = $id;
}
function getID()
{
return $this->id;
}
function setName($name)
{
$this->name = $name;
}
function getName()
{
return $this->name;
}
function otherFunc() //这是一个接口中不存在的方法
{
echo “Test”;
}
}
?>
PHP中多重接口的实现
在PHP的实际编程中,有时根据需要需设计多个接口,在实现的时候根据实际情况选择不同的一组来实现,这时需要使用一个类来实现两个或两个以上的接口。
例如:
<?php
interface staff_i1 //接口1
{
function setID();
function getID();
}
interface staff_i2 //接口2
{
function setName();
function getName();
}
class staff implements staff_i1,staff_i2
{
private $id;
private $name;
function setID($id)
{
$this->id = $id;
}
function getID()
{
return $this->id;
}
function setName($name)
{
$this->name = $name;
}
function getName()
{
return $this->name;
}
function otherFunc() //这是一个接口中不存在的方法
{
echo “Test”;
}
}
?>
PHP中的抽象类
抽象类的定义:
Abstract class class_name
PHP中抽象类与一般类的区别在于:抽象类不能用于创建对象,只能用于继承。
例如:
<?php
interface staff_i1 //接口1
{
function setID();
function getID();
}
interface staff_i2 //接口2
{
function setName();
function getName();
}
class staff implements staff_i1,staff_i2
{
private $id;
private $name;
function setID($id)
{
$this->id = $id;
}
function getID()
{
return $this->id;
}
function setName($name)
{
$this->name = $name;
}
function getName()
{
return $this->name;
}
}
class manager extends staff
{
function is_manager()
{
return TRUE;
}
}
?>
PHP中接口与抽象类的区别:
- 接口的使用方式通过implements关键字进行;抽象类则是通过继承extends关键字进行
- 接口可同时实现多个接口;对抽象类的继承只能继承一个抽象类
- 接口中不可以有函数的实现代码;抽象类中可有。