本次练习着重掌握PHP类的构建、实例化及其属性的查询和重置。
类KuCun.php 以一个商品信息类,其自有属性mc、sl、dw、dj分别表示商品的名称、数量、单位、单价,并预留属性数组data用于保存实例化后用户临时添加的属性。构造方法__construct(),魔术方法查询器__get()、设置器__set()
实例
<?php /* * 库存商品信息. */ /医院 * Description of KuCun * * @author Dell */ class KuCun { private $mc; private $sl; private $dw; private $dj; private $data = []; //构造方法 public function __construct($mc = '', $sl = 0, $dw = '', $dj = 0.00) { $this->mc = $mc; $this->sl = $sl; $this->dw = $dw; $this->dj = $dj; } //魔术方法:查询器 public function __get($name) { $msg = null; if ( isset($this->$name)) { $msg = $this->$name; } elseif (isset ($this->data[$name])) { //如果访问的是类中添加一个自定义属性 从$data数组中取值 $msg = $this->data[$name]; } else { $msg = '属性不存在'; } return $msg; } //魔术方法:设置器 public function __set($name,$value) { if ( isset($this->$name)) { //如果访问的是已存在的属性,则直接输出 $this->$name = $value; } else { //如果属性不存在,则创建它并保存到类属性$data数组中 $this->data[$name] = $value; } } }
运行实例 »
点击 "运行实例" 按钮查看在线实例
php代码demo.php将KuCun类实例化,同时访问、设置固有属性,访问设置不存在的属性
实例
<?php /* * 测试类(KuCun)的魔术方法:_get()和__set() */ require './class/KuCun.php'; $kucun = new KuCun('气缸体',2,'台',4150); //测试魔术方法__get() echo '名称: ',$kucun->mc,'<br>'; echo '数量: ',$kucun->sl,$kucun->dw, '<br>'; echo '单价:' ,$kucun->dj, '<br>'; //获取一个不存在的属性 echo '零售价:', $kucun->lsj, '<br>'; echo '<hr>'; //测试魔术方法: __set() $kucun->mc = '四配套'; $kucun->sl = 5; $kucun->dj = 5000; echo '名称: ',$kucun->mc,'<br>'; echo '数量: ',$kucun->sl,$kucun->dw, '<br>'; echo '单价: ',$kucun->dj, '<br>'; //给一个不存在的属性赋值,类中并无hobby字段 $kucun->lsj = 7600; echo '零售价:', $kucun->lsj, '<br>';
运行实例 »
点击 "运行实例" 按钮查看在线实例
demo.php运行截图