调试和执行不同PHP XDebug

时间:2016-03-10 18:19:46

标签: php debugging xampp phpstorm xdebug

我对PHP脚本的一个部分(更确切地说是条件语句)有一种奇怪的行为。

在XDebug(phpStorm)的条件的确切行上使用断点时,脚本按预期执行。相反,当正常执行或破坏其他任何地方(括号内或括号内)时,会跳过所谓的真实条件。

if($interval > $maxCovering) //2 DateInterval objects - break here and it works
{
  //Do something - never reached on standard execution
}

我试图在行之前暂停执行,但没有帮助。另外,我做了一些研究,并且对于PHP的这个问题没什么问题。

什么可能导致这种行为,有什么补救措施?

修改 这些是典型的日志: 'max'和'inter'是参数,'compar'是比较 前两行是断点执行,后两行没有

enter image description here

1 个答案:

答案 0 :(得分:0)

此处的问题不是由PhpStorm或XDebug引起的,而是由DateInterval类引起的,除非先进行评估,否则该类无法比较。这是一个众所周知的问题:SO question on the topic 为了解决这个问题,我在比较之前使用了非常不优雅的人工评估解决方案,因此代码变为:

var_dump($interval);
var_dump($maxCovering);
if($interval > $maxCovering) //2 DateInterval objects
{
  //Do something
}

上面引用的问题的答案也提供了补丁的链接。