在PHP中设置stdClass对象的命名空间

时间:2012-02-02 14:23:28

标签: php object namespaces stdclass

是否有人碰巧知道是否可以在用户定义的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对象分配相同的命名空间。

有谁知道我怎么做,或者甚至可能吗?

1 个答案:

答案 0 :(得分:45)

也许您想以相反的方式执行此操作并使stdClass-Object的命名空间显式化?这可以通过

来完成
use \stdClass

$dataObj = new \stdClass();

顺便说一句。 - 不,一旦定义了类,就无法更改它的名称空间。

如果您需要从另一个类的私有字段访问值,您可能需要查看ReflectionProperty内置类(请参阅http://php.net/manual/en/reflectionproperty.getvalue.php)。