PHP 对参数的空检查在非空变量上返回 false


php empty check on param returns false on not empty variable

class Renderer
{
    private $data;
    public function __construct()
    {
        $this->data = array();
    }
    public function __get($key)
    {
        return array_key_exists($key, $this->data) ? $this->data[$key] : null;
    }
    public function __set($key, $value)
    {
        $this->data[$key] = $value;
    }
}

当我检查empty($renderer->param)时,即使返回正确的值,它也返回 false var_dump($renderer->param)

是 php 在存储在数组中时检查类内的参数还是我错过了什么?

你可以(应该?(实现一个__isset()方法。关于empty()的手册说:

在无法访问的对象属性上使用 empty(( 时,如果声明了 __isset(( 重载方法。