V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
beaaar
V2EX  ›  PHP

关于类__unset(),__isset()的问题,__unset()掉的属性,通过__isset()检测会执行两次?

  •  
  •   beaaar · 2012-10-24 21:16:19 +08:00 · 2990 次点击
    这是一个创建于 4406 天前的主题,其中的信息可能已经有所发展或是发生改变。
    <?php
    class Phone {
    private $band;
    private $color;
    private $name;

    function __construct($band = 'nokia', $color = 'black', $name = 'Lumia920') {
    $this->band = $band;
    $this->color = $color;
    $this->name = $name;
    }


    function __isset($property) {
    if( isset($this->$property) ) {
    echo $property.'is '.$this->$property.'.';
    }else {
    echo $property.' is not set.<br/>';
    }
    }
    function __unset($property) {
    unset($this->$property);
    echo 'Unset '.$property.' successfully.<br/>';
    }
    }

    $phone = new Phone('nokia','blue');
    unset($phone->name);
    echo '<hr/>';
    isset($phone->name);
    ?>
    输出结果
    Unset name successfully.
    --------------------------------------
    name is not set.
    name is not set.
    以上函数,unset掉一个属性后,isset查询该属性是否存在,则__isset()输出了两次;
    如果直接isset一个不存在的属性,就会正常执行,不明白是为什么?
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2961 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 13:33 · PVG 21:33 · LAX 05:33 · JFK 08:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.