第 12章関数

目次
ユーザー定義関数
関数の引数
返り値
可変関数
内部(ビルトイン)関数

ユーザー定義関数

関数は次のような構文で定義されます。

<?php
function foo ($arg_1, $arg_2, ..., $arg_n)
{
    echo
"関数の例\n";
    return
$retval;
}
?>

関数の中では、他の関数や クラス 定義 を含む PHP のあらゆる有効なコードを使用することができます。

PHP 3 では、関数は参照される前に定義されている必要がありました。 PHP 4ではそのような制限はありません。 ただし以下の二つの例のように、条件付きで関数が 定義されるような場合を除きます

次の二つの例のように、ある条件下でのみ関数が定義される場合には、 その関数定義は関数がコールされる前に 行われていなければなりません。

例 12-1. 条件つきの関数

<?php

$makefoo
= true;

/* ここでは関数foo()はまだ定義されていないので
   コールすることはできません。
   しかし関数 bar()はコールできます。 */

bar();

if (
$makefoo) {
  function
foo ()
  {
    echo
"I don't exist until program execution reaches me.\n";
  }
}

/* ここでは $makefooがtrueと評価されているため
   安全にfoo()をコールすることができます。 */

if ($makefoo) foo();

function
bar()
{
  echo
"I exist immediately upon program start.\n";
}

?>

例 12-2. 関数の中の関数

<?php
function foo()
{
  function
bar()
  {
    echo
"I don't exist until foo() is called.\n";
  }
}

/* ここでは関数bar()はまだ定義されていないので
   コールすることはできません。 */

foo();

/* foo()の実行によって bar()が
   定義されるためここではbar()を
   コールすることができます。*/

bar();

?>

PHP は関数のオーバーロードをサポートしていません。 また、宣言された関数の定義を取り消したり再定義することも できません。

注意: 関数名は大文字小文字を区別しませんが、通常は 関数宣言時と同じ名前で関数をコールする方が好ましいです。

PHP 3 では、引数のデフォルト値(詳細は、引数のデフォルト値を 参照下さい)はサポートしていますが、関数の引数を可変とすることはで きません。PHP 4 は両方ともサポートしています。詳細は、 可変長引数リスト および func_num_args(), func_get_arg(), func_get_args() に関する関数リファレンスを 参照下さい。