调试和执行不同 PHP XDebug

Debug and execution differ PHP XDebug

我在 PHP 脚本的一部分(更准确地说是条件语句)中出现了奇怪的行为。

当使用 XDebug (phpStorm) 在条件的确切行上使用断点时,脚本会按预期执行。相反,当正常执行或在其他任何地方(括号前或括号内)中断时,将跳过假定的 true 条件。

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

我试图在该行之前暂停执行,但没有帮助。另外,我做了一些研究,但对 PHP.

这个问题一无所知

什么会导致这种行为,补救措施是什么?

编辑 这些是典型的日志: 'max' 和 'inter' 是参数,'compar' 是比较 前 2 行是带断点的执行,最后 2 行没有

这里的问题不是由 PhpStorm 或 XDebug 引起的,而是由 DateInterval class 引起的,除非先进行评估,否则它是不可比较的。这是一个已知问题:SO question on the topic.
为了解决这个问题,我使用了非常不优雅的解决方案,即在比较之前对其进行人工评估,因此代码变为:

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

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