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

2012-10-24 21:16:19 +08:00
 beaaar
<?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一个不存在的属性,就会正常执行,不明白是为什么?
2901 次点击
所在节点    PHP
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/50811

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX