ユーザ定義関数

 PHPでは、自分で関数を作る事が出来ます。関数の中では、他の関数やクラス定義を含むPHPの全ての有効なコードを使う事が出来ます。PHP3では、関数は参照される前に定義されている必要がありましたが(何かC言語ライクやねー)、PHP4ではそのような制限はなくなりました。

 又、関数の引数のデフォルト値を指定する事が出来ます。PHP4では、func_num_args( )、func_get_arg( )、func_get_args( )関数を使って引数を可変にする事が出来るようになりました。書式は以下の通りです。

function 関数名 ( 引数 ) {
  処理;
}

 定義した関数を呼び出す場合は、C言語同様、関数名の頭には何もつけなくていいです。以下に実際のプログラム例を示します。

<?php
function Hello ( ) {
  print "こんにちは、皆さん!";
}
Hello ( );
?>
▼実行結果
こんにちは、皆さん!

 次に、引数のあるプログラム例を示します。ここでは、引数のデフォルト値を設定しています。

<?php
function Coffee ( $name = "キリマンジャロ" ) {
  return "一杯の" . $name . "をお願いします。<BR>";
}
print Coffee ( );
print Coffee ("ブレンド");
?>
▼実行結果
一杯のキリマンジャロをお願いします。
一杯のブレンドをお願いします。

 尚、前にも述べたように、PHP4では関数を定義する前でも関数を呼び出せます。PHP3ではC言語ライクな厳格な規則を持っていたものの、PHP4でスクリプト言語らしく規則を緩和したと言った感じでしょうか(^^ゞ

デフォルト引数値使用時の注意点

 デフォルト引数値を使用する場合、デフォルト値の右側にデフォルト値を指定していない引数を置いてはいけません。例えば、以下のようなプログラムではWarningメッセージが出てエラーになります。

<?php
function Coffee ( $name = "キリマンジャロ", $num ) {
  return $num . "杯の" . $name . "を下さい。<BR>";
}
print Coffee (1);
?>

 これも、関数定義の引数の指定が、逆の「$num, $name = "キリマンジャロ"」であれば、エラーもなく正常に動きます。

参照渡し

 通常、関数の引数は値で渡されます。その為、関数の内部で引数の値を変更しても、関数の外部では値は変化しません。関数がその引数を修正できるようにするには、その引数を参照渡しとする必要があります。関数の引数を常に参照渡しにしたい場合は、関数で引数名の前にアンパサンド「&」を付加します。以下にそのプログラム例を示します。

<?php  
function Add_str ( &$string ) {  
  $string .= "今晩は。"; ←「.=」については、演算子のページを参照の事。
}  
$str = "山田さん、";  
Add_str ($str);  
print $str;  
?>  
▼実行結果  
山田さん、今晩は。  

 上の例では、引数が常に参照渡しになりますが、デフォルトでは参照渡しをしない事も出来ます。関数コール時に引数名の前にアンパサンド「&」を付加する事で可能になります。以下にそのプログラム例を示します。

<?php  
function Add_str ( $string ) {  
  $string .= "今晩は。";  
}  
$str = "山田さん、";  
Add_str ($str);  
print $str . "<BR>"; ←$strは、「山田さん、」のまま。
Add_str (&$str); ←ここで参照渡しにしたので、$strは、「山田さん、今晩は。」に替わった。
print $str . "<BR>";
?>  
▼実行結果  
山田さん、  
山田さん、今晩は。  

require文とinclude文 前へ

HOME

次へ 変数のスコープ