如何在php中正确调试

时间:2013-12-18 02:08:20

标签: php debugging echo

我在PHP中有大约2000行代码...有些地方我有一些回声在这里和那里知道这或那个做得很好......但是我对每一项任务做了更多的追踪和回应。 ..我在函数输入和函数返回之前的回声...但是所有这些回声污染了代码和屏幕,并且在准备生产时删除或注释掉它是一个难题......

这个问题,怎么说,回应这个和那个,但是当我说调试关闭时,停止回声..你在代码中怎么做...我想要的是

global $debug_echo;
$debug_echo = true;

if ($debug_echo) {echo "function xyz - start";}
if ($debug_echo) {echo "function xyz - end";}
...
...

所以有了这个,我可以通过一次改变随处调试......是否有意义?

3 个答案:

答案 0 :(得分:2)

调试的最佳方法是使用常量。因此,在文件的顶部,或者您想要打开或关闭调试模式的任何地方,都可以执行此操作

define('DEBUG', true);

然后检查你是否想做

if(DEBUG === true) { echo 'something here'; }

你只需要声明一次常量,然后它就可以在整个代码范围内使用,只要它在某处声明。

答案 1 :(得分:0)

在核心文件中,例如config.php(通常包含在Web应用程序的所有子文件中),有类似的内容:

$debug = true;

if($debug){ 
    ini_set('display_errors', 1);
    error_reporting(E_ALL);  
}else{ 
    error_reporting(0); 
}

然后只需将true更改为false即可禁用调试。

如果你想在脚本中间转储错误,比如MySQL查询,那么这就是一堆完全不同的鱼。

查看此幻灯片:http://www.slideshare.net/asgrim1/errors-exceptions-logging-php-hants-oct-13

答案 2 :(得分:0)

您可以做以下事情:

function is_dev() {
  return isset($_SERVER['APP_ENV'] AND $_SERVER['APP_ENV'] === 'DEV')
}

..在您的apache虚拟主机配置/ .htaccess

SetEnv APP_ENV DEV

如果您正在使用框架或动态创建SQL查询,则可以在is_dev()返回true时输出它们。

if(is_dev()) {
  echo $sql;
}