<?php
/**
* Created by PhpStorm.
* User: 廖广
* Date: 2019/4/10
* Time: 21:10
*/
//trait代码复用:增强当前类的功能,克服单继承的缺点
//trait 工作在继承的上下文环境中,它是位于父类和子类之间的
//trait 的优先级高于父类,低于子类
//Bus>trait>Auto
trait Fun1{
public function drive(){
return '支持无人驾驶';
}
public function care(){
return '保养其实很简单,记得及时充电就可以了';
}
//交通事故处理
public function accident() //['æksədənt]
{
return '汽车会自动报警,你就安静的坐在车里等警察来吧!';
}
}
trait Fun2{
public function fuel(){
return '新能源汽车';
}
//交能事故处理
public function accident()
{
return '只要不起火,电池还能继续使用的,放心吧!';
}
}
class Auto{
public $brand;
public $purpose;
// 构造器
public function __construct($brand,$purpose)
{
$this->brand=$brand;
$this->purpose=$purpose;
}
public function care()
{
return '请到授权的专业4S店保养';
}
}
//定义一个子类,工作类:bus
class Bus extends Auto{
//子类Bus除了可以继承Bus中的成员,还可以导入trait类中的方法
// use Fun1;
// use Fun2;
// 命名冲突的结局方法无非两种:替换,别名
use Fun1,Fun2{
Fun1::accident insteadof Fun2;
Fun2::accident as Fun2Acc;
}
public function care(){
return '我们是***商,保养请致电当地经销商';
}
}
//实例化Bus
$bus=new Bus('安凯','客运');
echo $bus->brand,'<br>';
echo $bus->purpose,'<br>';
//访问trait中的方法
echo $bus->drive(),'<br>';
echo $bus->fuel(),'<br>';
//访问care()
echo $bus->care(),'<br>';
//访问Fun1中的accident()
echo $bus->accident(),'<br>';
//访问Fun2中的accident()
echo $bus->Fun2Acc();