人生最悪の忘れ物

include を使って、次のふたつの処理を実行しようとしています。

include("a.php");
include("b.php");

$result_a=fun_a(1);
$result_b=fun_b(2);


さて、このとき、fun_a内で処理を中断した場合も、fun_bの処理も行わなければなりません。


fun_a内でexitを使用すると、それ以降のプログラムを実行しなくなったので、returnを使い

ました。すると、fun_a内で処理を中断しても、fun_bの処理が行えました。


結果的に、よかったのですが、こうしたincludeしたプログラム内で、処理を中断した場合も、

以降のプログラムを引き続き処理する場合には、returnを使うものなのでしょうか?

A 回答 (3件)

処理全体を終了(exit)させるのはメインルーチンの仕事ですので、関数内でその関数の処理を終了させる場合はreturnで呼出元に処理を戻します。



関数内で何らかのエラーが発生して処理の実行が困難になった場合は、呼出元にエラーを知らせる戻り値を返してメインルーチン内で戻り値の判断を行って処理を終了させるか、関数内でExceptionを投げてメインルーチン内のエラー処理に事後の処理を委ねます。
    • good
    • 0
この回答へのお礼

おっしゃるとおり、exitは、メインルーチン内で使うものですね。関数内では、戻り値を書き込み、メインルーチン内で判断することにしますね。

お礼日時:2011/12/10 08:37

関数はreturnで戻るのが基本です。



#exitで終わるくらいのケースなら、dieで止める方が多いと思います。

処理した結果どうだったか(ちゃんと処理できたかどうか)も含めて呼び出し元に返り値で戻します。returnを省略したらnullを返しますが、「何かあって中断した」のであれば、return false; などとして、あとで(必要があれば)見分けられるようにしておくべきです。
    • good
    • 0
この回答へのお礼

ありがとうございました。return で、戻り値を入れて使うことにします。

お礼日時:2011/12/10 08:34

>以降のプログラムを引き続き処理する場合には、returnを使うものなのでしょうか?



フローを最後までまわしたくないなら、手っ取り早いのはreturnです
exitは強制終了なので余程のことがない限りつかわないでしょう

<?PHP
@(1/0) or exit("error!");
?>
    • good
    • 0
この回答へのお礼

そうですね。exitは、なるべく使わないようにします。

お礼日時:2011/12/10 08:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報