ユーザ定義関数
そふぃのPHP入門 >> PHP言語リファレンス >> ユーザ定義関数 >> ユーザ定義関数

ユーザ定義関数

ユーザ定義関数

PHPの組み込み関数はさておき、ユーザ定義関数というものの説明に入りたいと思います。ユーザ定義関数とはその名前の通り、ユーザが定義できる関数です。ユーザとはPHPスクリプトを書いている皆さんの事ですが、よーは自分で作る関数だと思ってもらっていいです。

PHPに用意されている関数にそれ以外の動作を付け加えたり、自分のサイトで良く使う処理を関数化しておいたり・・といろいろ便利な使い方ができます。

ユーザ定義関数の中では他の関数やクラス(オブジェクトの)定義など、PHPの有効なコードであれば何でも書く事ができます。以下のようにして定義します。

  1. function 関数名 ( 引数 ){
  2.   処理;
  3. }

「関数名」の部分には自分で関数の名前を付けて記述します。引数を持たせたければ「引数」の部分に引数を記述し、「処理」の部分にその関数にさせたい処理を記述します。関数名は大文字小文字を区別しませんが、定義した時と同じ名前で参照するのが好ましいとされています。

また一度定義した関数は変数と違い、取り消したり再定義したりはできません。

定義した関数を呼び出す時にはそのまま記述するだけです。

実際に「Hello World」と出力するだけの関数を作成し、実行してみます。

  1. <?php
  2. function print_hello(){ //関数の作成
  3.   print "Hello World!!";
  4. };
  5.  
  6. print_hello(); //作成した関数を実行
  7. ?>

出力結果

Hello World!!

引数を指定した場合の動作などは後のページに譲りますのでそちらをご覧下さい。

関数の定義位置

PHP3では関数が参照される前にその関数が定義されている必要がありましたが、PHP4からそのような制限はなくなりました。

  1. <?php
  2. somefunc();
  3. function somefunc(){
  4.   echo "関数参照後に定義しています。";
  5. }
  6. ?>

出力結果

関数参照後に定義しています。

ただし、特定の条件下でのみ動作する関数や関数の中で別の関数を定義した場合には例外となり、その関数が参照される前に定義されていなければなりません。

特定の条件下でのみ動作・・・とはif文で条件指定した中に関数定義をした場合ですが、この場合は特定の条件下でのみ関数が定義されるためです。関数の中で別の関数を定義・・・とはそのままの意味ですが、A(関数)の中でB(関数)を定義した場合、Aが参照されていなければBは参照できません。これはAの中でBの関数定義をしている為、Aが参照されなければBも定義されていない状態だからです。

特定の条件下での関数

  1. <?php
  2. //if文で条件指定した中での関数定義なのでまだ呼び出す事はできません。
  3.  
  4. $name = "someone"; //条件を満たします
  5. //ここでfoo()を参照しようとしてもまだできません。
  6. //条件を満たしても条件式の評価が終わっていないためです。
  7.  
  8. if($name){
  9.   function foo(){
  10.     echo "こんにちわ";
  11.   }
  12. };
  13.  
  14. //条件式が評価されたのでやっと参照する事ができます。
  15. foo();
  16. ?>

出力結果

こんにちわ

関数の中の関数

  1. <?php
  2. function A(){
  3.   function B(){
  4.     echo "関数Aの中で定義されています。";
  5.   }
  6. }
  7.  
  8. //A()の実行によって初めてB()が定義される事に注意
  9.  
  10. A(); //この記述を抜くとB()も定義されず、エラーとなる
  11. B();
  12. ?>

出力結果

関数Aの中で定義されています。