博主信息
博文 23
粉丝 0
评论 0
访问量 17340
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
2019100801
王长中的博客
原创
735人浏览过

一,__get()

     当实例化一个对象后,获取类中不存在或者没有权限访问的属性的时候,php会默认调用__get()方法;

实例

<?php
class demo{
    private $cat='mimi';
   
}
$obj=new demo();
echo $obj->cat;//报错:无法访问私有属性;

class demo{
    private $cat='mimi';
    public function __get($name){
        return $this->$name;
    }
}
$obj=new demo();
echo $obj->cat;//返回'mimi'
?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

二,__set()

     当实例化一个对象后,更新类中不存在或者没有权限访问的属性的值的时候,php会默认调用__set()方法


实例

<?php
class demo2
{
    private $dog = 'wangcai';

    public function __get($name)
    {
        return $this->dog;
    }

    public function __set($name, $val)
    {
        return $this->$name = $val;
    }
}

$obj = new demo2();
echo $obj->dog='xiaohuang';//返回'xiaohuang';
?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

三,__isset()

     判断类里面某个属性是否存在,当对不可访问属性调用 isset() 或 empty() 时,__isset() 会被调用。


实例

<?php
class demo2
{
    private $dog = 'wangcai';

    public function __get($name)
    {
        return $this->dog;
    }

    public function __set($name, $val)
    {
        return $this->$name = $val;
    }
    public function __isset($name)
    {
        return isset($this->$name);
    }
}

$obj = new demo2();
//echo $obj->dog='xiaohua';
echo isset($obj->dog)?'存在':'不存在';//返回'存在';
?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

四,__unset()

      在外部释放类中不可访问的属性时,系统自动调用;


实例

<?php
class demo3{

 private $name ='wcz';

public function __unset($name)
     return unset($this->$name);
}
public function __get($name){

return $this->name;
}
$obj=new demo3();

unset($obj->name);

echo $obj->name;
?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

总结:

1,__get() :当获取类里面的不可访问的属性值时,php会自动调用魔术方法__get(),__get()必须有一个参数$name(被访问的属性名),

2,__set():更新类中不可访问的属性的值,php会调用魔术方法__set(),__set()有两个参数:$name(被更新的属性名),$value(更新后的值);

3,判断类中是否存在某个不可访问的属性时,要调用魔术方法__isset(),__isset()有一个参数:$name(被判断的属性名);

4,清空类中某个不可访问的属性值,php会调用魔术方法__unset(),__unset()有一个参数,$name(被清空的属性名),__unset没有返回值;

    实际应用中,我们经常会将一些属性值设置为私有属性,当需要对这些不可访问的属性操作时,用到以上方法;如果把属性设置成static,以上方法会出错。




    

批改状态:合格

老师批语:这类魔术方法, 实际上是提供一种容错机制 ,但可以在它上面发展出许多有用的功能
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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

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