まだ-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
}