自作関数の戻り値について - PHPプロ!Q&A掲示板

2828

  • 0P

自作関数の戻り値について

質問日時 / 2010年7月30日 15:43 (最終編集:7月30日 15:43)    回答数 / 4件

Questioner:  jun0223xp  このエントリーをはてなブックマークに追加 

キーワード / 関数    戻り値   

フラグを判断して、例えばフラグが『1』の場合は処理を続行、『0』の場合はトップページにリダイレクト、のような自作関数を作成するとします。

その場合、以下の[例]1と[例2]の書き方ではどちらが正しいのか教えてください。
よろしくお願いします。

[例1]では、関数の中で直接リダイレクトしています。
[例2]では、関数の戻り値としてはtrueかfalseしか返さず、その後にif文の分岐でリダイレクトさせています。
自分の考えでは[例2]の方が正しいような気がするのですがどうでしょうか?

[例1]
  1. <?php
  2. // 関数1の定義
  3. function example1( $int ) {
  4.   if( $int == 1 ) {
  5.     return true;
  6.   } else {
  7.     header( 'Location: http://www.example.com/' );
  8.     exit;
  9.   }
  10. }
  11.  
  12. // フラグの設定
  13. $flg = 1;
  14.  
  15. // 関数1の呼び出し
  16. example1( $flg );
  17. ?>

[例2]
  1. <?php
  2. // 関数2の定義
  3. function example2( $int ) {
  4.   if( $int == 1 ) {
  5.     return true;
  6.   } else {
  7.     return false;
  8.   }
  9. }
  10.  
  11. // フラグの設定
  12. $flg = 1;
  13.  
  14. // 関数2の呼び出し
  15. if( example2( $flg ) === false ) {
  16.   header( 'Location: http://www.example.com/' );
  17.   exit;
  18. }
  19. ?>

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┣A01magicflute2この意見は投稿者によって削除されました。
┣A02pannna作り手のポリシーによる部分が大きいものをどちらが…
┗A03shimix自分で書くのであれば、どちらでもお好きな方でとは思
 ┗A03-1pannna今回みたいな判定してあるURLにリダイレクトするので
  ┗A03-1-1jun0223xp返信が遅くなり申し訳ありません。 結局は作り手次

回答一覧

並び替え:

A01
answerermagicflute2 [7月30日 19:42]

この意見は投稿者によって削除されました。

ツリーへ TOPへ

A02
answererpannna [8月3日 03:03]

作り手のポリシーによる部分が大きいものをどちらが…と聞くのはちょっと?
まあ戻り値を必ず返すのが関数だ、という考えであれば、
判定のみを関数で行って判定結果によって呼び出し元でやるでしょうしね

この意見に回答する

ツリーへ TOPへ

A03
answerershimix [8月3日 13:25]

自分で書くのであれば、どちらでもお好きな方でとは思いますが・・・

私は、他人のソースを読んでいて(1)のような記述を見つけたら「要注意関数」としてリストアップします。呼び出し元からは推測できない動作ですから。なのでそんな要注意関数がたくさんあると匙を投げたくなります。

#もちろん「関数名から容易に想像できる動作」であれば別ですが、往々にして違うんですよね・・

今自分が書いているソースも数年(いや数ヶ月)後の自分が読めば他人のソースと同じ(いや、もっと読みにくいかも)になることは念頭に置いといてください。

この意見に回答する

ツリーへ TOPへ

A03-1
replyerpannna [8月4日 01:33]

今回みたいな判定してあるURLにリダイレクトするのであれば、
リダイレクト先のURLを引数に指定して汎用性のある関数にするのが一番いいかと思いますね
(もちろんURLは定数としてiniファイルみたいなものに書いておきますが)。

>今自分が書いているソースも数年(いや数ヶ月)後の自分が読めば他人のソースと同じ(いや、もっと読みにくいかも)になることは念頭に置いといてください。

これはプログラムを書く上で永遠の課題なんですよね…

この意見に回答する

ツリーへ TOPへ

A03-1-1
replyerjun0223xp [8月11日 00:44]

返信が遅くなり申し訳ありません。

結局は作り手次第ということでしょうか。

>今自分が書いているソースも数年(いや数ヶ月)後の自分が読めば他人のソースと同じ(いや、もっと読みにくいかも)になることは念頭に置いといてください。

よーく肝に銘じておきます。
お二方、返信ありがとうございました。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
動的なURLを静的に見せる方法
 このエントリーをはてなブックマークに追加 
A
普通に考えて、mod_rewrite でしょうね。 http://www.nishishi.com/blog/2006/01/mod_rewrite_url.html...

>>続きを読む

GETのままでは検索エンジンのロボットが拾ってくれなかったためにSEO対策として有効だと言われていますね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)