PHP Empty函数深入理解

empty() 函数用于检查一个变量是否为空,如果变量为空,则返回 true,否则返回 false。对于对象属性,空的定义取决于属性的可见性。

在 PHP 中,对象的属性有公有(public)、私有(private)和受保护(protected)三种可见性。公有属性可以直接从对象外部访问,而私有属性和受保护属性不能直接从对象外部访问。

当使用 empty() 函数检查一个对象的属性时,如果属性是私有的或受保护的,不管在对象内部有无赋值,那么 empty() 函数会返回 true,因为从对象外部无法直接访问到这个属性,也无法确定这个属性是否有值。

class MyObject {
    private $property;
    public function __construct($value = null) {
        $this->property = $value;
    }
    public function __get($key)
    {
        if(isset($this->{$key}))
        {
            return $this->{$key};
        }
        else
        {
            throw new \Exception("Property does not exist: " . get_class($this) . "::" . $key);
        }
    }
}
$object = new MyObject('value');
$property = $object->property; // 从对象外部获取属性值
var_dump(empty($object->property),empty($property));//true,false 因为属性是私有的

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注