本页属性重载练习小案例

原创 2018-12-14 15:41:26 206
摘要:<?php //类的重载:动态的创建类的属性和方法 /*实现:通过魔术方法  * 属性的重载  * 1.__set($name,$value)  * 2.__get($name)  * 3.isset($name)  * 4.unset($name)  * PHP中的重载指
<?php
//类的重载:动态的创建类的属性和方法
/*实现:通过魔术方法
 * 属性的重载
 * 1.__set($name,$value)
 * 2.__get($name)
 * 3.isset($name)
 * 4.unset($name)
 * PHP中的重载指的是动态的创建属性与方法,是通过魔术方法来实现的。
 * 属性的重载通过__set,__get,__isset,__unset来分别实现对不存在属性的赋值、读取、判断属性是否设置、销毁属性。
 */
class A
{
    protected $arr = [];

    public function __isset($name)
    {
        if (isset($this->arr[$name]))
        {
            return $this->arr[$name];
        }else{
            return '还没被设置';
        }
    }
    public function __set($name, $value)
    {
        if (isset($this->arr[$name]))
        {
            return $this->arr[$name];
        }else{
            return $this->arr[$name] = $value;
        }
    }
    public function __get($name)
    {
        if (isset($this->arr[$name]))
        {
            return $this->arr[$name];
        }else
        {
            return '非法访问';
        }
    }
    public function __unset($name)
    {
        if (isset($this->arr[$name]))
        {
            unset($this->arr[$name]);
        }else
        {
            return '销毁失败';
        }
    }
}

$a = new A();
echo $a->__isset('1'),'<hr>';
echo $a->__set('1','123'),'<hr>';
echo $a->__get('1'),'<hr>';
echo $a->__unset('1');
?>


批改老师:韦小宝批改时间:2018-12-14 16:01:33
老师总结:恩!写的很不错哦!课后要多多的练习才能更容易掌握!

发布手记

热门词条