PHPやJSで、関数の分岐はどこに書きますか? 独学で勉強しているのですが、一般的、慣習的な書き方を知りたいと思い質問させて頂きます。
PHPやJSで、関数の分岐はどこに書きますか? 独学で勉強しているのですが、一般的、慣習的な書き方を知りたいと思い質問させて頂きます。 次のように「あるページでだけ実行したい」という関数はよくあると思いますが、➀のように関数内で分岐しますか?それとも②のように関数の実行場所で分岐しますか?もしくはケースバイケースとし統一はしませんか? ━━━━━━━━━━━━━━ ➀関数内で分岐する↓ ━━━━━━━━━━━━━━ <?php // どのページでもとりあえず実行 $contents = get_contents( $page ); // レコードを取得 function get_contents( $page ){ if( $page === 'x' ) return; // xなら実行しない if( $page === 'a' ){ return [['id'=>1,'comment'=>'こんにちは']]; }else if( $page === 'b' ){ return [['id'=>1,'user_name'=>'鈴木']]; } } ━━━━━━━━━━━━━━ ➁関数の実行場所で分岐する↓ ━━━━━━━━━━━━━━ <?php // x以外のページで実行 if( $page !== 'x' ){ $contents = get_contents( $page ); } // レコードを取得 function get_contents( $page ){ if( $page === 'a' ){ return [['id'=>1,'comment'=>'こんにちは']]; }else if( $page === 'b' ){ return [['id'=>1,'user_name'=>'鈴木']]; } }
PHP | JavaScript・15閲覧・25
1人が共感しています
ベストアンサー
まぁ基本的にケースバイケースでしょうけど、 >if( $page === 'x' ) return; // xなら実行しない すでに呼び出されていますから、実行しない(何も返さない)というのはないですね。 RTFM. https://www.php.net/manual/ja/function.return.php ---------- 引用ここから PHP 7.1.0 以降では、戻り値の型が void でない場合、引数なしの return 文は E_COMPILE_ERROR が発生するようになりました。戻り値の型が void の場合、 return 文に引数があると、同様のエラーが発生します。 ---------- 引用ここまで そもそも「返り値を is_null でチェックする必要がある」ような関数は使いたくないでしょう? 関数は(呼び出されたのであれば)適切な値を返すべきです。呼び出し側がどうするかによって変わりますが、提示されたように配列を返すことを期待されている関数なら if( $page === 'x' ) return []; // 空の配列を返す でもいいし、呼び出し側でチェックする前提で if( $page === 'x' ) return false; // 不正な引数 もありでしょう(引数をチェックして不適切なら false を返すのは「よくやる」ことだと思います)。 ∴ 普通は呼び出し側がどうやっているかに関わらず関数は function get_contents($page) { if( $page === 'a' ) return ['id'=>1,'comment'=>'こんにちは']; if( $page === 'b' ) return ['id'=>1,'user_name'=>'鈴木']; return []; // もしくは return false; } ですよね。
3人がナイス!しています