PHPの関数は、複数の処理を一つにまとめたソースのブロックです。
関数を使用することで、ソースの再利用性が向上することや、可読性が高くなるなど、プログラムをより効率的に構築していくことができます。
関数の概念は、PHP以外の他のプログラミング言語でも必ず存在する、プログラミングの基本とも言えるものです。
この記事を理解し、プログラミングの基本を身につけていきましょう。
組み込み関数
PHPには多くの組み込み関数があり、文字列の操作や、配列の操作、日付、ファイル、セッション管理など、さまざまな処理を実行することができるようになっています。
このブログでもよく使う組み込み関数をいくつか紹介します。
echo | 指定の値を標準出力に書き出します |
strlen | 文字列の長さを取得します |
date | 現在の日付と時刻を文字列で取得します |
file_get_contents | ファイルの内容を文字列として読み込みます |
implode | 配列を結合して文字列を作ります |
ユーザー定義関数と引数
プログラマーは、組み込み関数を組み合わせて、独自の関数を作ることができます。
この関数をユーザー定義関数と呼びます。
ユーザー定義関数にも、組み込み関数と同様に、引数、戻り値、初期値の設定があります。
ユーザー定義関数は、このように作成します。
<?php
function hello($name = "PHP") {
echo "Hello! " . $name . "\n";
}
// 引数なしで呼び出す
hello();
// 引数ありで呼び出す
hello("M&Co.");
?>
このPHPを動かすとこのように表示されます。
引数なしの場合
Hello! PHP
引数ありの場合
Hello! M&Co.
引数が無しの場合は、初期値の「PHP」が$nameの変数に設定されるため、「Hello! PHP」と表示されます。
引数を指定する場合は、$nameの変数には、引数で指定する「M&Co.」が設定されます。
複数の引数
引数は、一つだけではなく、幾つでも複数指定することができます。
<?php
function sum_function($a, $b, $c, $d, $e) {
return $a + $b + $c + $d + $e;
}
$sum = sum_function(1, 2, 3, 4, 5);
echo $sum;
?>
このPHPを実行すると、引数が全て足し算されて、「15」が結果として表示されます。
これは5つの引数を使えるようにしましたが、必要に応じてもっと増やすことも可能です。
ユーザー定義関数の作成者が自由に引数が使えるように、作成することができますが、あまりにも多い引数は、せっかくの可読性を高くするためのユーザー定義関数も、使いづらいものとなってしまいます。
なるべく、コンパクトで処理の分かりやすい関数を作っていくことをお勧めします。
戻り値
次は、戻り値について確認してみましょう。
<?php
function hello($name = "PHP") {
echo "Hello! " . $name . "\n";
return strlen($name);
}
// 引数なしで呼び出す
$len = hello();
echo $len . "\n";
// 引数ありで呼び出す
$len = hello("M&Co.");
echo $len . "\n";
?>
ユーザー定義関数にreturnを記述すると、関数内の処理が終了し、関数を呼び出した処理に返ってきます。
returnは「処理を返す」などと言われることがあります。処理を返すタイミングで何かの値を同時に返すことができます。
関数を実行した結果を返し、処理が成功したのか、失敗したのかを判断するなど、ユーザー(ユーザー定義関数の作成者)が自由に関数を作成することができます。
上記のサンプルでは、引数の$nameの文字列の長さを返すようにしています。
匿名関数
PHPには、名前を持たない匿名関数を作ることもできます。使い方によっては、コードをきれいに書けたり、さらに可読性の高いコードにしていくことも可能です。
匿名関数は、変数に関数を代入して使用することができます。
<?php
$sum = function($a, $b) {
return $a + $b;
}
$sub = function($a, $b) {
return $a - $b;
}
$res = $sum(1, 2);
echo $res . "\n";
$res = $sub(1, 2);
echo $res . "\n";
?>
あまりいいサンプルではないですが、匿名関数の使い方が見えると思います。
実行した結果は、この通りです。
3
-1
まとめ
プログラミングをする上で、ユーザー定義関数も大事なことです。
ユーザー定義関数をうまく作れることが、良いプログラマーの一つの条件だと思います。
ユーザー定義関数は、関数名を見るだけで、どんな処理を行う関数なのかが分かるように作るのが上達のコツです。
練習だと思って、いろんな関数を作って実行して、プログラミングの経験をしてください。
ある程度のプログラムが出来たら、同じ処理をするプログラムとして、作り直すのも良い勉強になります。