【发布时间】:2018-11-20 21:30:57
【问题描述】:
我查看了不同的答案,除了这个谈论 die while testing and generating errors 的答案之外,我想知道 die() 在继续执行无用时是否会对我的代码产生负面影响。
例如,如果我有一个包含许多条件的长脚本,那么在给定点,一旦我正在寻找的条件成功,我就不需要我的脚本继续测试其他条件。
$a = 'a';
if($a == 'a'){
//long script
die();
}
if($b == 'a'){
//long script
die();
}
if($c == 'a'){
//long script
die();
}
这是一个简单且可能很愚蠢的示例,还有其他更优雅的解决方案,但它有助于解释我的问题;如果我在第一个条件下die(),它将停止执行其余代码,理论上,这应该优化性能,或者可能不会......
让脚本结束更好还是die()实际上会加快进程?如果die() 有负面影响,当然还有其他方法可以绕过它,比如创建标志让脚本跳过某些代码块,我只想知道die() 的负面影响如果有的话。
例如:
- 在内存方面,die() 会继续使用内存还是释放更多内存。
- 就时间/执行而言,die() 会加快进程,因为它不会尝试执行脚本的其余部分,或者根本没有区别。想象一下,在代码中可能有一个可以避免的繁重过程。
我想明确这一点,我知道必须有许多其他方法来提高效率,更短的脚本、开关、标志等。我只是想了解使用die() 是否有任何负面影响。
谢谢
【问题讨论】:
-
我都不喜欢。
exit是更喜欢的,但通常在基于控制器的环境(MVC,MVVM)中你会return -
我猜是口味问题。我通常会抛出一个异常,将其捕获到更高的位置,然后记录该异常。脚本到此结束。但这仅在您想稍后检查它们时才有用,如果您不在乎,还不如退出(或死亡)。
-
退出真的比死机更受欢迎吗?我从die 手册页看到的只有
die — Equivalent to exit看看你用 die 保存的所有字节! -
这个问题不是基于意见的,不应该被搁置。
-
“我只是想了解使用 die() 是否有任何负面影响” - 不……好吧,除非你可能患有死亡恐惧症。我只会在测试环境中使用其中任何一个进行调试。