我猜想任何仍然返回 -1 的 PHP 函数都是出于遗留原因这样做的。
对于有逻辑、合理错误响应且不涉及返回神秘数字代码的简单函数,则应使用该函数。例如,返回null
、false
或0
可能足以传达发生的情况。但是对于更复杂的功能,尤其是那些可能具有多种故障模式的功能,请考虑将它们分解为不同的功能,每个功能处理整个任务的一小部分。
你也可以抛出异常:
function doSomething() {
if (fooFails()) {
throw new Exception('Foo failed to work properly.');
} else if (barFails()) {
throw new Exception('Bar failed this time.');
}
return "blahblah";
}
您还可以对该类进行子Exception
类化以提供更多特异性,并且您可以使用 try-catch 块来检测哪一个。一般来说,我认为最好使用这样的面向对象原则。它生成的代码更加清晰和可维护,尤其是在您完全忘记了为什么以这种方式编写代码之后的 6 个月。
class FooException extends Exception {
// nothing else needed here
}
class BarException extends Exception {
// nothing else needed here
}
function doSomething() {
if (fooFails()) {
throw new FooException();
} else if (barFails()) {
throw new BarException();
}
return "blahblah";
}
然后你可以使用:
try {
$output = doSomething();
} catch (FooException $e) {
// respond to the FooException case
} catch (BarException $e) {
// respond to the BarException case
} catch (Exception $e) {
// respond to any and all other exceptions that might be thrown
}