我有以下 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不适用于这种情况。
有什么办法可以让它发挥作用吗?
如果我是你,我会向此类添加一个公共方法,如下所示:
public function propertyExists($property) { return property_exists($this, $property) || isset($this->params[$property]); }
Run Code Online (Sandbox Code Playgroud)
如果您有很多这样的类(并且您使用的是 php 5.4 或更高版本),您可能需要考虑将此函数作为可以在所有这些类中使用的 Trait。
| 归档时间: |
|
| 查看次数: |
1786 次 |
| 最近记录: |