本次练习着重掌握PHP类的构建、实例化及其属性的查询和重置。
类KuCun.php 以一个商品信息类,其自有属性mc、sl、dw、dj分别表示商品的名称、数量、单位、单价,并预留属性数组data用于保存实例化后用户临时添加的属性。构造方法__construct(),魔术方法查询器__get()、设置器__set()
实例
/*
* 库存商品信息.
*/
/医院
* 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类实例化,同时访问、设置固有属性,访问设置不存在的属性
实例
/*
* 测试类(KuCun)的魔术方法:_get()和__set()
*/
require './class/KuCun.php';
$kucun = new KuCun('气缸体',2,'台',4150);
//测试魔术方法__get()
echo '名称: ',$kucun->mc,'
';
echo '数量: ',$kucun->sl,$kucun->dw, '
';
echo '单价:' ,$kucun->dj, '
';
//获取一个不存在的属性
echo '零售价:', $kucun->lsj, '
';
echo '
';
//测试魔术方法: __set()
$kucun->mc = '四配套';
$kucun->sl = 5;
$kucun->dj = 5000;
echo '名称: ',$kucun->mc,'
';
echo '数量: ',$kucun->sl,$kucun->dw, '
';
echo '单价: ',$kucun->dj, '
';
//给一个不存在的属性赋值,类中并无hobby字段
$kucun->lsj = 7600;
echo '零售价:', $kucun->lsj, '
';
运行实例 »
点击 "运行实例" 按钮查看在线实例
demo.php运行截图