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

Ski*_*les 18 php namespaces object 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;
}
Run Code Online (Sandbox Code Playgroud)

我唯一的问题是这个函数所在的类是使用命名空间,因此我需要以某种方式为这个$ dataObj对象分配相同的命名空间.

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

Mar*_*fuß 53

也许你想反过来这样做,并使stdClass-Object的命名空间显式?这可以通过其中之一完成

use \stdClass
Run Code Online (Sandbox Code Playgroud)

要么

$dataObj = new \stdClass();
Run Code Online (Sandbox Code Playgroud)

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

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