我们有一个很大的代码库,每隔一段时间就会出现一个用于测试但未删除/注释的var_dump。使用XDebug(http://devzone.zend.com/1135/tracing-php-applications-with-xdebug/)有一个混乱的解决方案,但也许可以在运行时在PHP中完成一些巧妙的事情。
另外,我不想通过正则表达式修改或搜索代码。我已尝试使用自己的var_dump_v2,但它很快就不再使用了。
答案 0 :(得分:3)
是否可以在php.ini中使用disable_functions操作来禁用生产服务器上的var_dump?我不确定这个设置的结果是什么(即它是否因错误而失败,或者是默默地)文档不是那么清楚。
http://php.net/manual/en/ini.core.php - 请参阅" disable_functions"
还有override_function:
<?php
override_function('var_dump', '$a', 'return 0;');
?>
答案 1 :(得分:0)
如果您有可用的PECL并安装了runkit,实际上有办法实现此目的。如果你在php.ini中将runkit.internal_override
设置为“1”,你可以使runkit能够覆盖PHP的内部函数。
要删除var_dump函数,可以使用:
runkit_function_remove('var_dump');
在你的情况下,不要出错,你应该改为使用这样的东西:
runkit_function_redefine('var_dump', '','');
查看runkit extensions documentation here。
您可能还想查看“Advanced PHP debugger”,这是另一个似乎提供override_function()的扩展程序。
答案 2 :(得分:0)
你可以使用猴子补丁。
只需在文件的第一行定义命名空间,并定义函数var_dump
<?php
namespace monkey;
function var_dump($obj) {}
当然,这意味着您不在当前文件中使用命名空间
您可以使用函数var_dump()将其作为前缀名称空间()的前缀:\var_dump()
当然,只要不在命名空间中覆盖它们,所有其他本机函数将继续照常工作。
答案 3 :(得分:-1)
如果您拥有大型数据库,为什么不使用serialize()
或json_encode()
?这将非常有用。
但请注意,serialize()
会给你一个像这样的1行输出:
's:0:"";s:5:"value";'
因此,您需要了解serialize()
的解剖结构才能使用它:PHP Serialize