我觉得我在这里遗漏了一些东西。我现在一直在使用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回应“它是空的”。但它不是!!!
但是,如果我将属性存储在变量中,然后对其进行评估,它确实有效。
那么确定对象属性是否为空的最佳方法是什么?谢谢。
答案 0 :(得分:24)
您需要实施__isset()魔法。
__ isset()是通过在不可访问的属性上调用isset()或empty()来触发的。
public function __isset($property){
return isset($this->$property);
}
答案 1 :(得分:4)
if (empty(($person->number)))
/* OR */
if (!isset($person->nothing) || empty(($person->nothing)))
在Object-> Property值周围放置()将强制在调用empty之前对其进行求值。
答案 2 :(得分:1)
检查返回值是否为null
。应该给你正确的答案。