视屏12:11说销毁时需要判断,我的没有判断是否存在

视屏12:11说销毁时需要判断,我的没有判断是否存在

<?php
class Person
{
   public $name='小芳';
   protected $age=18;

   public function __get($n)
   {
       //echo '触发了不可访问的属性'.$n;
//    return 22;

       if($n == 'age'){
           return $this->age;
       }else{
           return '瞎问什么啊';
       }

   }

   public function __set($n,$v)
   {
       echo '触发了设置不可访问的属性'.$n.'值为'.$v;
       $this->$n = $v;
   }

   public function __isset($n)
   {
       echo '判存在'.$n,'<br/>';
   }

   public function __unset($n)
   {
       echo '销毁一个不可访问的属性'.$n;
   }

}

$xiao = new Person();

echo $xiao->age;
echo $xiao->xxx;

$xiao->age = 11;
isset($xiao->age);
unset($xiao->age);


http://img1.sycdn.imooc.com//climg/5a4782c0000160ef04690173.jpg



正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
提问者 明浩 2017-12-30 20:21:06

销毁后需不需要再判断?

  • 帮你百度了一下 __unset执行以后,有的会自动再执行一次是否存在的判断,然后就会再执行一次__iseset,有的就不会,这可能跟php版本有关吧,而且这个东西八百年也用不上一次,知道魔术方法执行逻辑就可以了。
    2017-12-31 14:07:18
  • 提问者 明浩 回复 辰星辰 #2
    好的,谢谢
    2017-12-31 14:19:40
提问者 明浩 2017-12-30 20:16:42

视屏中在unset()后面也没有写isset()出现了判断一个不可访问的属性是否存在这几个字

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师