代码之家  ›  专栏  ›  技术社区  ›  user1122069

从PHP代码中删除var_dump

php
  •  2
  • user1122069  · 技术社区  · 10 年前

    我们有一个庞大的代码库,并且经常会突然出现一个用于测试而未删除/注释的var_dump。使用XDebug有一个混乱的解决方案( http://devzone.zend.com/1135/tracing-php-applications-with-xdebug/ ),但也许在运行时可以在PHP中完成一些巧妙的操作。

    此外,我不想通过正则表达式修改或搜索代码。我尝试过使用自己的var_dump_v2,但很快就失效了。

    4 回复  |  直到 10 年前
        1
  •  5
  •   beiller    10 年前

    是否可以使用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;');
    ?>
    

    http://php.net/manual/en/function.override-function.php

        2
  •  0
  •   Marcus Olsson    10 年前

    如果您有PECL,并且 runkit 安装。如果在php.ini中设置 runkit.internal_override 至“1”。

    要删除var_dump函数,可以使用:

    runkit_function_remove('var_dump');
    

    在您的情况下,为了避免出现错误,您可能应该使用以下内容:

    runkit_function_redefine('var_dump', '','');
    

    看看 runkit extensions documentation here .

    您可能还想看看“ Advanced PHP debugger “,另一个扩展似乎提供了 override_function() .

        3
  •  0
  •   Adam    10 年前

    你可以使用猴子补丁。

    只需在文件的第一行定义一个名称空间,并定义var_dump函数

         <?php
         namespace monkey;
         function var_dump($obj) {}
    

    当然,这意味着在当前文件中不使用名称空间

    您可以使用var_dump()函数在其前面加上根namespace(): \var_dump()

    当然,只要不在命名空间中重写它们,所有其他本机函数都将照常工作。

        4
  •  -1
  •   Andreas    10 年前

    你为什么不使用 serialize() json_encode() 如果你有一个大型数据库?这将非常有用。

    但请注意, 序列化() 将为您提供一个类似于以下内容的单线输出:

    's:0:"";s:5:"value";'
    

    所以你需要学习 序列化() 使用它: PHP Serialize