前回は「関数を他のファイル(プログラム)から使うこと」について
その1として書いていきました。ただし、そこで紹介したやりかたは
非効率なものでしたので、今回は効率的な書き方を紹介したいと思います。
そのためには「関数を外部ファイル化する」という方法を採用します。
つまり、以下の様な関数だけが記述されているPHPプログラムを作成します。
<?php function return_word($data){ if($data == 1){ return "a"; }else if($data == 2){ return "b"; }else{ return "c"; } }//ここで関数終了
関数だけを定義(記述した)sample_function.phpを実行しても
何も表示されませんでした。それもそのはずで、1回も echo などの出力命令が
記述されていないからです。
しかし、ここまでで、関数を外部ファイル化することに成功しました。
外部ファイル化とは、別のファイルに記述すること、です。
関数を外部ファイル化した次は、外部ファイルに記述した関数を使う(これを呼び出すという)
プログラムを学んでいきましょう。
今、以下の様な function4.php があるとします。
<?php $a = 2; $b = 1; $c = $a - $b * $a; echo return_word($a); //sample_function.phpの関数を使いたいと思ってる echo "<br>"; //改行 echo return_word($b); echo "<br>"; //改行 echo return_word($c); ?>
このプログラムの実行結果はエラーとなります。
function4.phpではreturn_wordという関数が未定義のため、エラーとなります。
そこで、sample_function.phpに定義したreturn_word関数を使えるようにしたいと
思います。
と最初に記述することで、function4.phpから、sample_function.phpに
記述されている関数を呼び出す(利用する)ことができます。
requireが要求する、という英単語なので、わかりやすいと思います。
修正後のfunction4.phpは以下の様になります。
<?php require "sample_function.php"; //sample_function.phpのプログラムを使うよ $a = 2; $b = 1; $c = $a - $b * $a; echo return_word($a); //sample_function.phpの関数を使いたいと思ってる echo "<br>"; //改行 echo return_word($b); echo "<br>"; //改行 echo return_word($c); ?>
今度はエラーにならずに結果が表示出来ました。
function4.phpにはreturn_wordが定義されていませんが、
requireで要求したsample_function.phpには
return_word関数が定義されていますので、自動的に
sample_function.phpのreturn_word関数を利用してくれます。
最後に、なぜ関数を外部ファイル化するのか?という原点に戻ると、
1回作成した関数を、他のファイルでも使いたい、と思った時、
その関数をいちいちコピペするのは非効率です。
例:プログラムの行数が長くなります。
そこで、関数を外部ファイル化して、requireを書くことで
呼び出し可能にしておけば、プログラムの行数を増やさなくても
やりたいことが実現できます。
このように、同じプログラムを何度も書かないということが
システムエンジニアとしての仕事の効率を上げていくことにつながります。