property_exists 不适用于动态生成的类属性

Che*_*eng 1 php

我有以下 PHP 类,其属性是在运行时动态生成的。

<?php

class ParamEx
{
    private $params = array();

    public function __get($name) {
        return $this->params[$name];
    }

    public function __set($name, $value) {
        $this->params[$name] = $value;
    }
};

$paramEx = new ParamEx();
$property = "dummy_property";
$paramEx->$property = "123";

// "123" printed
echo $paramEx->$property . "\n";

// Nothing printed
echo property_exists($paramEx, $property) . "\n";
Run Code Online (Sandbox Code Playgroud)

我意识到property_exists不适用于这种情况。

有什么办法可以让它发挥作用吗?

Oko*_*000 5

如果我是你,我会向此类添加一个公共方法,如下所示:

public function propertyExists($property) { return property_exists($this, $property) || isset($this->params[$property]); }
Run Code Online (Sandbox Code Playgroud)

如果您有很多这样的类(并且您使用的是 php 5.4 或更高版本),您可能需要考虑将此函数作为可以在所有这些类中使用的 Trait。