说我已经向php
文件发出了ajax请求。当结果是成功或其他什么的时候。我不需要我的服务器来完成剩下的代码。所以我在考虑使用exit
函数但是有太多exits
的好习惯?我不确定。
if(some condition) exit("success");
else if(some condition) exit("fail");
// after some 3 lines or so
if(fail) exit("error");
在PHP中使用太多退出函数是一种好的或坏的做法。谁能告诉我使用exit
功能有什么限制吗?有人告诉我,你不能在一个函数中使用太多的return
语句,而我认为甚至exit
都不能更频繁地使用exit
。使用太多{{1}}函数是一种错误的做事方式?
当满足给定要求时,不需要进一步执行代码。我不希望我的服务器停机并结束我可以简单地退出。我觉得它更快?
答案 0 :(得分:2)
对我而言,这是错误的做法。如果可能的话,一个入口点和一个出口点 - 它与它的语言无关。我关心自己的时间,这种方法只是帮助阅读,维护和调试代码。
修改强>
总结我的观点(或遵循评论):这不是黑/白的情况,所以你永远不应该真的100%严格,但我倾向于避免提前退货,如果我发现这导致可读性损失,这是对我来说有充分的理由,但如果代码看起来像是带有所有嵌套if()/else
块的圣诞树,我有时也同意这样做。
答案 1 :(得分:2)
我更喜欢有多个退出消息,在方法中绘制多个return语句之间的相关性。
如果您没有多条退出消息,我认为您的代码会有点难看:
$retCondition = "success";
if(!some condition) {
if(some condition 2) $retCondition = "fail";
else {
..Your code
}
}
exit($retCondition);
这是一种php解决方案,但你明白了。
答案 2 :(得分:1)
我更喜欢使用Exception
,仅使用exit
redirecting
使用headers
try {
if (! $conditionA) {
throw new Exception(" Fail ConditionA");
}
if (! $conditionB) {
throw new Exception(" Fail ConditionB");
}
header("Location: xxx");
exit();
} catch (Exception $e) {
echo $e->getMessage();
}
答案 3 :(得分:0)
使用退出是一种不好的做法。它只应在关键代码失败时使用,例如:
<?php defined('FOO') or exit('Foo not set');?>
<?php mysql_connect('usr','pwd','host') or exit('could not connect');?>
对于正常情况,例如'if'语句:
if (condition) {
echo 'Hello';
} else {
callSomeFunction();
}
假设你有一个fooBar函数:
function fooBar () {
if (condition) {
return 'Hello';
} else {
return FALSE; // If you use return the function 'fooBar' stops at that point
echo 'Hello?'; // This is not executed because we already returned.
}
}
祝你好运
答案 4 :(得分:0)
如果您使用的是真正的面向对象样式,则其结构应类似于以下
function foo($x){
if (!is_int($x)) throw new Exception('foo needs an int argument');
return $x *2
}
现在只有一个返回,当你调用方法时,你使用
$variable = 0;
try{
$variable = $this->foo(2.5);
}catch(Exception e){
print_r($e)
}
允许您查看问题并以受控方式处理。
它遵循以1“开始”和1“结束”的流程图方式,但允许显示非常详细的消息等
答案 5 :(得分:0)
它不会导致任何问题,但只有一个退出点很好。它可以使调试更容易。你可以这样做:
if(some condition) $error_msg = "success";
else if(some condition) $error_msg = "fail";
// after some 3 lines or so
if(fail) $error_msg = "error";
if($error_msg != '') exit($error_msg);