博客列表 >2019100801

2019100801

王长中的博客
王长中的博客原创
2019年10月13日 22:24:25541浏览

一,__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 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议