接口示例
// 接口是类的模板,子类必须完成他指定的方法。
// 商店应有的功能
interface Shop
{
// 方法必须公有
public function buy($goods);
public function sell();
}
// 接口可以继承
interface Items extends Shop
{
public function demo();
}
// 子类可以实现多个接口
// 子类必须实现 buy 和 sell 方法
class BaseShop implements Shop, Items
{
public function buy($name)
{
echo "您购买了{$name}<br>";
}
public function sell()
{
$name = '手机';
echo "您售出了一部{$name}<br>";
}
public function demo()
{
echo '我是用来演示接口多实现的方法';
}
}
$items = new BaseShop;
$items->buy('电脑');
$items->sell();
$items->demo();
输出结果:
trait 示例
trait 可以用来定义一些公共代码片段,减少代码重复,提供代码复用。
// 计算汽车税后总价
trait calculatePrice
{
private $price = 480000; // 价格
private $tax = 0.08; // 税收
// 计算总价
public function totalPrice() {
return $this->price * (1 + $this->tax);
}
}
class Car
{
use calculatePrice;
public $model = 'BMW Z4';
}
$bmw = new Car;
echo "{$bmw->model} 税后总价是:{$bmw->totalPrice()}";
输出结果:
BMW Z4 税后总价是:518400