使用 empty() 方法判断对象的属性有坑 [ 技术分享 ]
通过对象的 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"
共 1 条回复
-
fly_boy_hss 回复于 2019-04-25 09:57 举报
哈哈,类的拦截器作怪,empty() isset()判断时会被isset()拦截,不会执行get(),感觉这个设定还是可以的,就是要注意了
specialnot
注册时间:2015-08-06
最后登录:2019-08-16
在线时长:27小时54分
最后登录:2019-08-16
在线时长:27小时54分
- 粉丝43
- 金钱1175
- 威望200
- 积分3445