関数は次のような構文で定義されます。
関数の中では、他の関数や クラス 定義
を含む PHP のあらゆる有効なコードを使用することができます。
PHP 3 では、関数は参照される前に定義されている必要がありました。
PHP 4以降ではそのような制限はありません。
ただし以下の二つの例のように、条件付きで関数が
定義されるような場合を除きます。
次の二つの例のように、ある条件下でのみ関数が定義される場合には、
その関数定義は関数がコールされる前に
行われていなければなりません。
例 17-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"; }
?>
|
|
例 17-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() に関する関数リファレンスを
参照ください。