确定object属性是否为空

时间:2012-08-02 03:15:49

标签: php

我觉得我在这里遗漏了一些东西。我现在一直在使用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回应“它是空的”。但它不是!!!

但是,如果我将属性存储在变量中,然后对其进行评估,它确实有效。

那么确定对象属性是否为空的最佳方法是什么?谢谢。

3 个答案:

答案 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。应该给你正确的答案。

相关问题