我使用php编程创建了总api,用于我使用的输出
json_encode($arr),
现在我想将输出打印为漂亮的打印格式 在浏览器中不使用JSON Viewer扩展..
我已经使用json_encode($ arr)完成了400多个webservices输出,但我不想改为
echo json_encode($arr, JSON_PRETTY_PRINT);
我只想要如何覆盖默认的json_encode()预定义功能,以满足我的需求..
答案 0 :(得分:3)
通过使用提供runkit
或runkit_function_redefine()
提供apd
的{{1}}等扩展程序,有一些方法可以做到这一点。
如果我是你,我只需找到/替换override_function()
来电,添加json_encode()
。
答案 1 :(得分:2)
另一个没有重新定义json_encode函数的解决方案,你也可以简单地注册一个输出处理程序,它读取打印的json并再次打印出来。
ob_start(function($json) {
return json_encode(json_decode($json), JSON_PRETTY_PRINT);
});
这个解决方案的好处是,你不需要任何php扩展(因为runkit目前在PHP 7中不起作用)
答案 2 :(得分:2)
您可以像这样使用override_function
:
rename_function('json_encode', 'original_json_encode');
override_function('json_encode', '$value, $options = 128, $depth = 512', 'return original_json_encode($value, $options, $depth);');
通过这种方式,你可以使用原始的一个来获得结果,覆盖默认选项(128是JSON_PRETTY_PRINT
的值),你可以像以前一样使用json_encode