我觉得我在这里错过了一些东西。我已经使用 PHP 的
empty()
函数一段时间来确定变量是否为空。我想用它来确定对象的属性是否为空,但不知何故它不起作用。这是一个简化的类来说明问题
// The Class
class Person{
private $number;
public function __construct($num){
$this->number = $num;
}
// this the returns value, even though its a private member
public function __get($property){
return intval($this->$property);
}
}
// The Code
$person = new Person(5);
if (empty($person->number)){
echo "its empty";
} else {
echo "its not empty";
}
所以基本上,
$person
对象的 number 属性应该有一个值(5)。正如您可能已经猜到的,问题是 php 回显“itsempty”。但事实并非如此!!!
但是,如果我将属性存储在变量中,然后对其进行评估,它确实有效。
那么确定对象属性是否为空的最佳方法是什么?谢谢你。
你需要实现 __isset() 魔术方法。
__isset() 通过对不可访问的属性调用 isset() 或 empty() 来触发。
public function __isset($property){
return isset($this->$property);
}
if (empty(($person->number)))
/* OR */
if (!isset($person->nothing) || empty(($person->nothing)))
将 () 放在对象->属性值周围将强制在调用空之前对其进行评估。
检查返回值是否为
null
。应该给你正确的答案。