编辑 :目前是2016年9月24日,PHP 5.4已于2012-03-01发布,支持 已于 2015-09-01 结束
。不过,这个答案似乎获得了好评。如果您仍在使用PHP <5.4, 则可能会带来安全隐患,并破坏您的项目
。如果您没有令人信服的理由停留在<5.4,或者甚至已经使用版本> = 5.4, 请不要使用此答案 ,而只需使用PHP> =
5.4(或者您知道是最近的版本)并实现JsonSerializable接口
您将定义一个函数(例如named)
getJsonData();,该函数将返回数组,
stdClass对象或其他具有可见参数的对象,而不是私有/受保护的参数,然后执行
json_enpre($data->getJsonData());。本质上,从5.4开始实现该功能,但要手动调用它。
可以
get_object_vars()从类内部调用这样的方法,它可以访问私有/受保护的变量:
function getJsonData(){ $var = get_object_vars($this); foreach ($var as &$value) { if (is_object($value) && method_exists($value,'getJsonData')) { $value = $value->getJsonData(); } } return $var;}


