PHP|PHP empty函数测试对象使用魔术方法获取的属性
从PHP官方文档可以看到,empty用于测试一个变量是否为空,empty($var)等价于
!isset($var) || $var == false
empty方法的参数只能是一个变量,当传入一个对象的属性时,如果该属性是真实存在的,empty可以正常工作。
如果该属性是通过魔术方法获取的,empty的返回结果不是期望中的,而总是返回true。
【PHP|PHP empty函数测试对象使用魔术方法获取的属性】PHP版本为5.6.24
# php --version
PHP 5.6.24 (cli) (built: Aug1 2016 14:48:54)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
class Test1 {
protected $attributes = [
'name' => 'Test1',
];
public function __get($attr)
{
return isset($this->attributes[$attr]) ? $this->attributes[$attr] : null;
}
}class Test2 {
public $name = 'Test2';
}$test1 = new Test1();
print $test1->name ;
//-- Test1if (empty($test1->name)) {
print 'test1\'s name is empty';
} else {
print 'test1\' name is not empty';
}
//-- test1's name is empty$test2 = new Test2();
print $test2->name ;
//-- Test2if (empty($test2->name)) {
print 'test2\'s name is empty';
} else {
print 'test2\' name is not empty';
}
//-- test2's name is not empty
推荐阅读
- 一起来学习C语言的字符串转换函数
- C语言字符函数中的isalnum()和iscntrl()你都知道吗
- C语言浮点函数中的modf和fmod详解
- C语言中的时间函数clock()和time()你都了解吗
- thinkphp|thinkphp 3.2 如何调用第三方类库
- CGI,FastCGI,PHP-CGI与PHP-FPM
- 概率论/统计学|随机变量 的 分布函数 与 概率密度函数 的区别
- vue组件中为何data必须是一个函数()
- iOS-Swift-map|iOS-Swift-map filter reduce、函数式编程
- PHP开发-Mac搭建ThinkPHP5.0