简体   繁体   English

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;
    }
}

When I check empty($renderer->param) it returns false even if var_dump($renderer->param) returns correct value. 当我检查empty($renderer->param) ,即使var_dump($renderer->param)返回正确的值,它也会返回false。

Is it that php checks for parameter inside class when it's stored in array or am I missing something? 当它存储在数组中时,php是否在类中检查参数?还是我错过了一些东西?

You could (should?) implement an __isset() method. 您可以(应该?)实现__isset()方法。 The manual on empty() says: empty()手册上说:

When using empty() on inaccessible object properties, the __isset() overloading method will be called, if declared. 在无法访问的对象属性上使用empty()时,将声明__isset()重载方法(如果声明)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM