调试和执行不同 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 补丁。
我在 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 补丁。