我们有一个很大的代码库,每隔一段时间用于测试并且不会被删除/注释的var_dump突然出现。使用XDebug(http://devzone.zend.com/1135/tracing-php-applications-with-xdebug/)有一个混乱的解决方案,但也许有一些可以在运行时用PHP完成的内容。从PHP代码中删除var_dump
此外,我不想通过正则表达式修改或搜索代码。我尝试过使用我自己的var_dump_v2,但它很快就失效了。
我们有一个很大的代码库,每隔一段时间用于测试并且不会被删除/注释的var_dump突然出现。使用XDebug(http://devzone.zend.com/1135/tracing-php-applications-with-xdebug/)有一个混乱的解决方案,但也许有一些可以在运行时用PHP完成的内容。从PHP代码中删除var_dump
此外,我不想通过正则表达式修改或搜索代码。我尝试过使用我自己的var_dump_v2,但它很快就失效了。
是否可以使用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;');
?>
如果您有大型数据库,为什么不使用serialize()
或json_encode()
?这将非常有用。
但需注意,serialize()
会给你一个1行输出有点像这样:
's:0:"";s:5:"value";'
所以,你需要学习的serialize()
解剖使用它:PHP Serialize
而且,'连载()'和'json_encode()'的方式更快地在大型使用时数据库:[PHP中的标准缓存代码转换器](http://nitschinger.at/Benchmarking-Cache-Transcoders-in-PHP) – Andreas 2015-02-24 20:07:19
我想你的意思是发布这个不同的问题 – 2015-02-24 20:20:52
其实有办法要做到这一点,如果你有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()。
您可以使用猴子补丁。
只定义在文件的第一行命名空间和定义函数的var_dump
<?php
namespace monkey;
function var_dump($obj) {}
当然,它意味着你不使用一个命名空间在当前文件
你可以使用函数var_dump()以根名称空间()作为前缀:\var_dump()
当然,只要不在名称空间中覆盖它们,其他所有本机函数仍将继续正常工作。
正是我所期待的r,很难相信它存在 – user1122069 2015-02-25 02:14:03