博主信息
博文 29
粉丝 0
评论 0
访问量 33226
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
两个魔术方法(__get()和__set())的使用练习
LIWEN的博客
原创
707人浏览过

魔术方法:是指PHP为我们提供的一系列用双下划线(__)开头的函数,这些函数无需自己手动调用,会在合适的时机自动调用,这类函数称为魔术函数。
* 比如之前使用过的 function __construct(){}, 构造函数,在new一个新对象时自动调用此函数
* 1、__get() 当用户访问一个不存在或者无权访问的属性的时候,自动调用
* 2、__set() 当用户对一个不存在或者无权访问的属性赋值的时候,自动调用

执行结果如下图:

2018-01-11_114802.png

代码如下:

<?php
class Books1
{
    private $name;
    protected $price;
    //用__construct()这个构造函数来初始化属性值。__construct()函数在用户创建对象时,自动执行。
    public function __construct($name='《思考,快与慢》',$price=69)
    {
        $this->name = $name;
        $this->price = $price;
    }

    //1、__get()魔术方法的使用
    public function __get($proName)  //$proName 是属性名
    {
        //用条件判断来实现对私有属性和受保护属性的有条件的外部调用
        if ($this->price == 69 || $this->name == '《思考,快与慢》'){
            return $this->$proName;
        }else{
            return '您无权访问该属性';
        }
    }
    //2、__set()魔术方法的使用
    public function __set($proName, $proValue)  //$proName是属性名,$proValue 是属性值
    {
            return $this->$proName = $proValue;  //将属性值赋值给属性
    }
}

$obj1 = new Books1();
echo $obj1->name.'售价:';
echo $obj1->price.'元/本';
echo '<hr>';

$boj2 = new Books1();
echo $boj2->name = '《智识分子》'.'售价:';
echo $boj2->price = '65'.'元/本';
echo '<hr>';
echo $boj2->name = '《完全写作手册》'.'售价:';
echo $boj2->price = '78'.'元/本';


本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学