博客列表 >PHP类属性的查询和设置 201年5月2日

PHP类属性的查询和设置 201年5月2日

墨雨的博客
墨雨的博客原创
2018年05月03日 12:39:10976浏览

本次练习着重掌握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运行截图

草图.png

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议