在 PHP 中为 stdClass 对象设置命名空间
Posted
技术标签:
【中文标题】在 PHP 中为 stdClass 对象设置命名空间【英文标题】:Setting namespace for stdClass object in PHP 【发布时间】: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 对象。
有谁知道我该怎么做或者是否有可能?
【问题讨论】:
【参考方案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以上是关于在 PHP 中为 stdClass 对象设置命名空间的主要内容,如果未能解决你的问题,请参考以下文章