ユーザ定義関数

PHPのスクリプトは、あらかじめ定義されている 1000以上にも及ぶ「関数」を駆使することによって作成します。言い換えれば、関数を知れば知るほど、豊富で複雑な PHPスクリプトが作成できるというものです。
なお、PHPにあらかじめ組み込まれている関数については、「関数リファレンス」を参照してください。
この節では、作者が自ら関数を定義する「ユーザ定義関数」について解説します。
関数定義
プログラムとは、始まり → 処理 → 終わり、という一連の流れに沿って記述します。コンピュータは、プログラムの1行ずつを先頭から順に解釈して処理していきます。プログラムを利用するとき、操作する人によっては、手順に従わない様々な操作や入力をします。その際、それらを処理するために膨大な量のプログラムを組むのは、コストや時間ばかりかかり、メンテナンスしにくいものとなってしまいます。
そうした何があるか分からない場合に備えて、別途プログラムを組むことをサブルーチンと呼びます。必要に応じて、サブルーチンのプログラムを呼び出す手法は、どのプログラム言語でも利用されています。いうなれば、プログラムを組むということは、サブルーチンの集合を作るようなものです。
前置きが長くなりましたが、そうしたサブルーチンを関数と呼び、あらかじめ小さなプログラムを1つにまとめて、必要に応じて呼び出すというものです。そうした関数を定義して利用することを、「ユーザ定義関数」と呼びます。
関数を定義する function
関数とは、前述したとおり1つのかたまりとして処理するためのプログラムです。閲覧者からの操作や入力応じて、決められた関数を使って結果を返すなどに使われます。
関数を定義するために、function というステートメントによって定義します。
 function 関数名() {
  処理に必要なプログラム
   }
まるで JavaScript の定義関数と同じです。関数名は、変数の命名規則 と同じです。また関数名は、大文字と小文字を区別しません。aA は同じに扱います。
functionステートメントの後には半角のスペースが必ず必要です。関数名には「引数」を指定する括弧「( )」を添えます。引数のパラメータが必要ない場合には空となります。関数の定義後には、セミコロンは必要ありません。関数のための処理スクリプトは、ブロック内で配置されます。
関数からの戻り値 return
関数のスクリプトで処理され、その値が必要な場合には returnステートメントを使って、値を返します。これを戻り値(返し値)と呼びます。
  function samp() {
   return(戻り値);
     }
戻り値を利用する場合には、その戻り値をそのまま利用することができます。
  function strong($text) {
    return("<em>$text</em>\n");
    }

  print(strong("この文字は強調されます"));
ここでは、strong関数を定義して、出力するテキストの文字を強調させるために、戻り値を利用しています。以下がその実行結果です。
関数の戻り値を使った実行結果を Mozillaブラウザで出力した画像
戻り値として定義された HTMLem要素によって、関数が実行された内容の文字列を強調しています。このような使い方さえも可能です。
このスクリプトでは、関数の引数にパラメータとして変数を利用しています。関数の引数として、変数や値の入力を受け取ることができます。ここでは、戻り値として HTMLの構文を受け取っています。
引数の値渡し
関数に値を渡す場合に、引数を使って渡します。関数に対して引数として与えられた値は、「値渡し」が行われます。値渡しは、関数にデータを渡すときに、値そのものを渡します。
引数には、数値、変数、配列などを指定することができます。また引数は、カンマで区切ることにより、複数指定することもできます。
非常に面白いのは、関数に渡された引数を変更しても、影響を受けるのは関数の中だけにとどめられます。つまり、変数を引数に値渡しされたとき、変数の値そのものは関数の中だけで変化しますが、関数の外ではまったく変化しません。
  function num($a) {
    $a = ($a +2) * $a;
      return $a;
    }

   $b = 5;
   print("\$b の初期値は". $b. " です<br>\n");
   $c = num($b);
   print("関数に渡された \$b の値は". $b. " です<br>\n");
   print("関数の実行結果は ".$c. " です");
上記スクリプトの実行結果はこちら → 引数の値渡しサンプル
引数の参照渡し
引数にアンパサンド「&」をつけると、「参照渡し」(リファレンス渡しとも言う)となり、引数として渡された変数自体の値を変化させることができます。つまり、関数の外にある変数を引数として渡された場合、結果としてその変数の値が変化することになります。
  function num(&$a) {
    $a = ($a +2) * $a;
      return $a;
    }

   $b = 5;
   print("\$b の初期値は". $b. " です<br>\n");
   $c = num($b);
   print("関数に渡された \$b の値は". $b. " です<br>\n");
   print("関数の実行結果は ".$c. " です");
上記スクリプトの実行結果はこちら → 引数の参照渡しサンプル
このスクリプトでは、先ほどのサンプルと比べてほとんど何も変るところがありません。唯一、関数の引数に示されたパラメータに「&」が付いているだけです。
引数のデフォルト値
引数の値を最初から指定してしまう方法を「デフォルト値」の指定です。引数のパラメータにイコール「 = 」という代入演算子を利用してデフォルト値を設定します。
  function 関数名(変数, デフォルト値)
この設定を先ほどのサンプルに当てはめると、
  function num($a = 5) {
    $a = ($a +2) * $a;
      return $a;
    }
こうすることで戻り値には、計算結果の「35」が格納されます。初めから引数を指定してしまう方法は随所で利用されています。デフォルト値は、カンマで区切って複数設定することができます。


This Page is HTML4.01 Valid! 最新更新日 2004年1月18日   最新更新日 2004年4月1日
Copyright(C) 2002〜2004 banban@scollabo.com