RepairShops.php(修理厂)和Distributor.php(经销商)是继承于父类Customer.php(客户)的两个子类,AdvertisingTheme.php(在客户门店投放广告的主题)是用Trait定义的类方法,在上述两个子类定义时用 use 调用Trait代码实现AdvertisingTheme方法的代码复用。
1.Customer.php
实例
<?php /* * 客户类 */ /** * Description of Customer * * @author Dell */ class Customer { protected $name; //名称 protected $address; //地址 protected $phone; //电话 protected $linkman; //联系人 public function __construct($name,$address,$phone,$linkman) { $this->name = $name; $this->address = $address; $this->phone = $phone; $this->linkman = $linkman; } public function call() //回访 { echo '电话回访'; } }
运行实例 »
点击 "运行实例" 按钮查看在线实例
2.AdvertisingTheme.php
实例
<?php /* * 投放广告主题 */ //声明trait类:AdvertisingTheme if(!trait_exists('AdvertisingTheme')){ trait AdvertisingTheme { public function theme($theme) { return $theme; } } }
运行实例 »
点击 "运行实例" 按钮查看在线实例
3.RepairShops.php
实例
<?php /* * 汽修厂类 继承 客户类 */ /** * Description of RepairShops * * @author Dell */ class RepairShops extends Customer { use AdvertisingTheme; //创建查询器访问父类受保护的属性 public function __get($name) { return $this->$name; } private $project; //维修项目 private $repairman; //修理工人数 public function __construct($name,$address,$phone,$linkman,$project,$repairman) { //调用父类构造器 parent::__construct($name, $address, $phone, $linkman); $this->project = $project; $this->repairman = $repairman; } //重写父类方法 public function call() { return parent::call().'.询问'.$this->project.'是不是要用'.$this->repairman.'个人?'; } }
运行实例 »
点击 "运行实例" 按钮查看在线实例
4.Distributor.php
实例
<?php /* * 经销商类 */ /** * Description of Distributor * * @author Dell */ class Distributor extends Customer { //创建查询器访问父类受保护的属性 public function __get($name) { return $this->$name; } public function __construct($name,$address,$phone,$linkman) { //调用父类构造器 parent::__construct($name, $address, $phone, $linkman); } use AdvertisingTheme; }
运行实例 »
点击 "运行实例" 按钮查看在线实例
5.验证代码m.php
实例
<?php /* * 类的继承与方法重载 * */ //使用自动加载器来加载类:(简写版) spl_autoload_register(function($className){ require './class/'.$className.'.php'; }); $repair = new RepairShops('冀东汽修','曹妃甸区海港路','03155555555','凌云','保养变速箱',4); //父类中的属性 echo '名称: '.$repair->name.'<br>'; echo '地址: '.$repair->address.'<br>'; echo '电话: '.$repair->phone. '<br>'; echo '联系人: '.$repair->linkman. '<br>'; //在子类中扩展的属性 echo '项目:'.$repair->project.'<br>'; echo '人数:'.$repair->repairman.'<br>'; echo '店面投放广告主题:'.$repair->theme('丰通润滑油修理厂专用版面').'<br>'; echo '<hr>'; $dist = new Distributor('四通汽配商行','乐亭县乐港路西高村头','03154534445','李海民'); //父类中的属性 echo '名称: '.$dist->name.'<br>'; echo '地址: '.$dist->address.'<br>'; echo '电话: '.$dist->phone. '<br>'; echo '联系人: '.$dist->linkman. '<br>'; echo '店面投放广告主题:'.$dist->theme('安庆ATG户外-跨路版').'<br>';
运行实例 »
点击 "运行实例" 按钮查看在线实例
6.验证代码执行截图