function __unset() 与function __isset() 一起用出现的怪问题?
时间:2011-10-18
来源:互联网
<?php
class member {
private $name;
protected $sex;
public $age;
private $mb;
public function __construct($name='',$sex='',$age='',$mb=''){
$this->name=$name;
$this->sex=$sex;
$this->age=$age;
$this->mb=$mb;
}
public function __unset($propertyName){
unset($this->$propertyName);
}
public function __isset($propertyName){
if(isset($this->$propertyName)){
echo '变量存在。';
}
else{
echo '变量不存在。';
}
}
}
$p1=new member;
unset($p1->name);
isset($p1->name);
?>
/**********************************************************************************************************************/
上面的运行结果是:
变量不存在。变量不存在。
/**********************************************************************************************************************/
想了几天也想不明白为什么这里会执行了2次,显示了2次“变量不存在。” 用我的理解,理论上应该是会执行 echo '变量存在。'; 1次的。我这里的是PHP5.35
在线求解答:::
class member {
private $name;
protected $sex;
public $age;
private $mb;
public function __construct($name='',$sex='',$age='',$mb=''){
$this->name=$name;
$this->sex=$sex;
$this->age=$age;
$this->mb=$mb;
}
public function __unset($propertyName){
unset($this->$propertyName);
}
public function __isset($propertyName){
if(isset($this->$propertyName)){
echo '变量存在。';
}
else{
echo '变量不存在。';
}
}
}
$p1=new member;
unset($p1->name);
isset($p1->name);
?>
/**********************************************************************************************************************/
上面的运行结果是:
变量不存在。变量不存在。
/**********************************************************************************************************************/
想了几天也想不明白为什么这里会执行了2次,显示了2次“变量不存在。” 用我的理解,理论上应该是会执行 echo '变量存在。'; 1次的。我这里的是PHP5.35
在线求解答:::
作者: unx2011 发布时间: 2011-10-18
public function __isset($propertyName){
if(isset($this->$propertyName)){//把这里的isset去掉就正常了。
echo '变量存在。';
}
else{
echo '变量不存在。';
}
}
if(isset($this->$propertyName)){//把这里的isset去掉就正常了。
echo '变量存在。';
}
else{
echo '变量不存在。';
}
}
作者: 白老师 发布时间: 2011-10-18
去掉isset 会出Notice: Undefined property: member::$name
---------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------
作者: unx2011 发布时间: 2011-10-18
public function __isset($propertyName){
if(isset($this->$propertyName)){ //这里有isset 应该没有问题,但是与外面的unset()一起用,当变量给删除时就会出现2次的问题
echo '变量存在。';
}
else{
echo '变量不存在。';
}
}
if(isset($this->$propertyName)){ //这里有isset 应该没有问题,但是与外面的unset()一起用,当变量给删除时就会出现2次的问题
echo '变量存在。';
}
else{
echo '变量不存在。';
}
}
作者: unx2011 发布时间: 2011-10-18
<?php
class member {
private $name;
protected $sex;
public $age;
private $mb;
public function __construct($name='',$sex='',$age='',$mb=''){
$this->name=$name;
$this->sex=$sex;
$this->age=$age;
$this->mb=$mb;
}
public function __unset($propertyName){ //当类外部使用unset()时自动执行这个方法。
unset($this->$propertyName);
}
public function __isset($propertyName){//当类外部使用isset()时自动执行__isset(){内的内容}
if(isset($this->$propertyName)){//判断if(内的检测结果){检测结果为FALSE,执行这里}
echo '变量存在。<br>'; //
}
else{
echo '变量不存在。<br>';
}
}
}
$p1=new member; //实例化一个对像$p1
unset($p1->name);//调用类内的__unset() 方法来 销毁对像$p1内的成员属性$name
isset($p1->name);//调用类内的__isset() 方法来 检测对像$p1内的成员属性$name是否存在。(结果这里显示了2次不存在)
isset($p1->mb)//检测$p1内成员$mb
?>
class member {
private $name;
protected $sex;
public $age;
private $mb;
public function __construct($name='',$sex='',$age='',$mb=''){
$this->name=$name;
$this->sex=$sex;
$this->age=$age;
$this->mb=$mb;
}
public function __unset($propertyName){ //当类外部使用unset()时自动执行这个方法。
unset($this->$propertyName);
}
public function __isset($propertyName){//当类外部使用isset()时自动执行__isset(){内的内容}
if(isset($this->$propertyName)){//判断if(内的检测结果){检测结果为FALSE,执行这里}
echo '变量存在。<br>'; //
}
else{
echo '变量不存在。<br>';
}
}
}
$p1=new member; //实例化一个对像$p1
unset($p1->name);//调用类内的__unset() 方法来 销毁对像$p1内的成员属性$name
isset($p1->name);//调用类内的__isset() 方法来 检测对像$p1内的成员属性$name是否存在。(结果这里显示了2次不存在)
isset($p1->mb)//检测$p1内成员$mb
?>
描述:代码
图片:A.jpg
'700')this.width='700';if(this.offsetHeight>'700')this.height='700';" title="Click Here To EnLarge">
图片:A.jpg
'700')this.width='700';if(this.offsetHeight>'700')this.height='700';" title="Click Here To EnLarge">
描述:运行结果
图片:B.jpg
=700) window.open('http://bbs.lampbrother.net/attachment/Mon_1110/179_65818_b7d81344ef17c3a.jpg');" onload="if(this.offsetWidth>'700')this.width='700';if(this.offsetHeight>'700')this.height='700';" >
图片:B.jpg
=700) window.open('http://bbs.lampbrother.net/attachment/Mon_1110/179_65818_b7d81344ef17c3a.jpg');" onload="if(this.offsetWidth>'700')this.width='700';if(this.offsetHeight>'700')this.height='700';" >
作者: unx2011 发布时间: 2011-10-18
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28