接口使用场景
单接口
接口可以突破PHP类的继承限制,允许多继承,形成了多层级的接口
用抽象类来部分实现一个接口
接口是实现多态的重要手段<?php
interface Animal
{
const MOTION = 'fly';
public function eatFood();
}
abstract class Flying
{
abstract public function fly();
}
class Bird extends Flying implements Animal
{
public function eatFood()
{
return __CLASS__.'吃虫子'.',拥有技能:'.Bird::MOTION.'
';
}
public function fly()
{
return '我可以飞行';
}
}
$bird = new Bird;
echo $bird->eatFood();
echo $bird->fly();
2trait:与抽象类,接口一样不能实例化,只能嵌入到宿主类中使用<?php
trait tUniversity
{
protected $area;
protected $totalPeroson;
public function setIntroduce($area,$totalPeroson){
$this->area = $area;
$this->totalPeroson = $totalPeroson;
}
public function getIntroduce(){
echo '占地面积:'.$this -> area.'校园总人数:'.$this -> totalPeroson.'
';
}
}
class Peking
{
use tUniversity;
}
$peking = new Peking();
$area = '约7000亩';
$totalPeroson = '三万五千多';
$peking->setIntroduce($area,$totalPeroson);
$peking->getIntroduce();
class Tsinghua
{
use tUniversity;
}
$tsingHua = new Tsinghua;
$area = '392.4公顷';
$totalPeroson = '四万七千多';
$tsingHua->setIntroduce($area,$totalPeroson);
$tsingHua->getIntroduce();
总结:接口中只允许有抽象方法以及常量,接口中的方法默认就是抽象的,它的抽象类的一种升级,抽象类中还可以有其他属性;trait很好的实现了代码的复用,trait中可以有常规属性、静态属性以及抽象属性。