【问题标题】:Setting namespace for stdClass object in PHP在 PHP 中为 stdClass 对象设置命名空间
【发布时间】:2012-02-25 04:50:51
【问题描述】:

有谁知道是否可以在用户定义的 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 对象。

有谁知道我该怎么做或者是否有可能?

【问题讨论】:

    标签: php object namespaces stdclass


    【解决方案1】:

    也许您想反其道而行之,让 stdClass-Object 的命名空间显式化?这可以通过任一方式完成

    use \stdClass
    

    $dataObj = new \stdClass();
    

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

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

    【讨论】:

    • 所以,如果上述方法所在的类是使用命名空间foo;我不能让 $dataObj 使用相同的命名空间吗?
    • $dataObj = new \stdClass();那成功了!谢谢你,奇迹史密斯! :)
    • 关于命名空间的 PHP 文档:nl.php.net/manual/en/language.namespaces.basics.php
    猜你喜欢
    • 2011-10-12
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 2012-04-08
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    相关资源
    最近更新 更多