【发布时间】:2012-12-05 04:03:09
【问题描述】:
问题:我不想暴露$myProperty,也就是说它不应该是public,但我需要它是public,只是为了__toString():
class A
{
protected $myProperty;
public function __toString()
{
return json_encode($this);
}
}
我知道ReflectionProperty 类有一个名为setAccessible() 的方法,但是在返回字符串之前我应该如何使用它?
编辑:根据 cmets,我需要与 PHP 5.3.x 兼容,即没有 JSonSerializable 类。
【问题讨论】:
-
最好实现
JsonSerializable接口,明确哪些字段会被序列化,哪些不会。 -
我不得不说
setAccessible()可能属于“你永远不应该使用的邪恶魔法”的范畴。这很有趣,但在生产代码中绝不应该是必需的。 -
@moonwave99 当然,但我需要与 5.3.x 兼容。
-
@gremo 好吧,基本上是一样的——你不实现接口,当你需要的时候显式调用方法^^
标签: php reflection public protected