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

2588

  • 0P

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

質問日時 / 2010年3月5日 10:06    回答数 / 4件

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

キーワード / 関数    返り値   

現在、汎用性の高い関数を作っています。
そのさい、返り値を、標準の関数のように

”成功した場合に TRUE を、失敗した場合に FALSE を返します。”

というような仕様にしようとしているのですが、

返り値を返す際のコードの書き方の定石のようなものはあるのでしょうか?

もしあるようでしたら、ぜひ教えてください。

よろしくお願いします。

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



ツリー一覧

┣A01shimix単にreturnするだけですから、コードの書き方にこれと
┣A02galluがると申します。 個人的なルールですが。 私は「
┣A03magicflute2【自分ルール】 ・関数内の条件式では、極力 else を
┗A04php_babyshimixさま galluさま magicflute2さま あり

回答一覧

並び替え:

A01 満足
answerershimix [3月5日 11:10] (最終編集:3月5日 11:35)

単にreturnするだけですから、コードの書き方にこれといって定石はないように思います。ただ

>”成功した場合に TRUE を、失敗した場合に FALSE を返します。”

チェックだけの関数であればいいですが、そうでなければ「成功したら処理結果を、失敗したらfalseを返す」こともけっこうありますよね。使い方として

  $ret = userfunc($var) or ・・

も多いのではないでしょうか(複数の戻り値があったらarrayで返したりもしますよね)。戻り値で返すのがいいのか参照渡しがいいのかは、使い勝手を考慮して決めた方がよろしいかと思います。

この意見に回答する

ツリーへ TOPへ

A02 満足
answerergallu [3月5日 12:56]

がると申します。

個人的なルールですが。
私は「returnの型は成功/失敗時で一致させる」ように、できるだけしています。

ですので。
単純に「成功/失敗」を取りたいのであれば、 booleanで true/false を。
文字列を返す関数の場合は、失敗したら空文字を。
配列を返すのであれば空配列を、オブジェクトを返すものであればNULLを。

「そんな人もいる」程度に読んでいただければと思います。

この意見に回答する

ツリーへ TOPへ

A03 満足
answerermagicflute2 [3月5日 13:25] (最終編集:3月5日 13:36)

【自分ルール】
・関数内の条件式では、極力 else を省略する。
・“失敗”は無いが、どちらか二つの値を返す場合、三項演算子を使う。
すると、“成功”“失敗”がまとまって見やすい。
  1. <?php
  2. function hoge( $x )
  3. {
  4.   // “成功”or“失敗”の判定は上でまとめて
  5.   if ( isset( $x ) ) {
  6.     if ( is_scalar( $x ) )
  7.       return ( $x === 1 )?    'A':'B'// “成功”
  8.     if ( is_array( $x ) )
  9.       return ( $x[0] === 1 )'C':'D'// “成功”
  10.   }
  11.   //“失敗”は下でまとめて返す
  12.   return FALSE;
  13. }

この意見に回答する

ツリーへ TOPへ

A04
answererphp_baby [3月5日 15:07]

shimixさま

galluさま

magicflute2さま

ありがとうございます。
参考にさせていただきます。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

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

>>続きを読む

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

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