specialnot 2019-04-22 16:46:20 299次浏览 1条回复 0 0 0

通过对象的 getter 方法获取一个属性,比如 $order->b, (b, 不存在,但是可以通过 getter 拿到数据), empty($order->b) 结果是 true

能理解这么设计的思路,但是感觉很不爽

  1 <?php                                                                       
  2 class Order
  3 {
  4     public $a = 1;
  5 
  6     public function __get($name)
  7     {
  8         if ($name === 'b') {
  9             return 2;
 10         }
 11 
 12         return null;
 13     }
 14 }
 15 
 16 $o = new Order();
 17 var_dump($o->a);
 18 var_dump($o->b);
 19 var_dump(empty($o->a));
 20 var_dump(empty($o->b));
 21 var_dump($o->b ? "yes" : "no");



##结果
int(1)
int(2)
bool(false)
bool(true)
string(3) "yes"
亿速云
  • 回复于 2019-04-25 09:57 举报

    哈哈,类的拦截器作怪,empty() isset()判断时会被isset()拦截,不会执行get(),感觉这个设定还是可以的,就是要注意了

您需要登录后才可以回复。登录 | 立即注册