是否有人碰巧知道是否可以在用户定义的stdClass对象上设置命名空间。
我想要做的是以getter方法的形式将类的所有私有属性作为对象返回。
我找到了一个可能的解决方案,我可以做这样的事情;
public function getDataItems() {
$dataObj = new stdClass;
$dataObj->image_id = $this->image_id;
$dataObj->image_name = $this->image_name;
$dataObj->name = $this->name;
$dataObj->email = $this->email;
$dataObj->company = $this->company;
return $dataObj;
}
我唯一的问题是这个函数所在的类是使用命名空间,因此我需要以某种方式为这个$ dataObj对象分配相同的命名空间。
有谁知道我怎么做,或者甚至可能吗?
答案 0 :(得分:45)
也许您想以相反的方式执行此操作并使stdClass-Object的命名空间显式化?这可以通过
来完成use \stdClass
或
$dataObj = new \stdClass();
顺便说一句。 - 不,一旦定义了类,就无法更改它的名称空间。
如果您需要从另一个类的私有字段访问值,您可能需要查看ReflectionProperty
内置类(请参阅http://php.net/manual/en/reflectionproperty.getvalue.php)。