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

2022-08-30 16:21:29

有没有人碰巧知道是否可以在用户定义的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

也许你想反过来做这件事,并使stdClass-Object的命名空间显式?这可以由以下任一方式完成

use \stdClass

$dataObj = new \stdClass();

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

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


答案 2

推荐