※前回の講座がまだの人はこちら
【PHP入門⑨】クラス ~初心者でも安心!基礎から学べるプログラミング講座~
関数
関数とは、「ある機能が書かれているプログラム」や「処理の塊」のことです。
関数は、呼び出すことで関数内の「ある機能が書かれているプログラム」を実行することができます。
同じ処理を何度も行いたい時、その処理が関数内に書いてあれば、関数を何度も呼び出すだけで同じ処理を行うことができます。結果的に、コードが短く綺麗になります。
例えば、自転車が「前進する」と「止まる」を繰り返す処理を書くとします。それぞれコード1~3まで書く必要があるが、関数を使えばコード4のみで実装が可能になるイメージです。
関数の定義
PHPの関数はfunctionと書けば宣言することができます。
function 関数名(引数){ 処理; return 返り値; }
この様に書くことで「関数名」という名前の関数を宣言できます。
引数と返り値に関しては、後述します。
関数の作成
まずは、簡単な関数を作ってみます。
function sample(){ echo 'sample関数<br/>'; }
これは「sample関数」という文字列を表示させる関数sample()です。
この状態では、関数を作っただけで、呼び出さなければ関数内の処理は実行されません。
関数の呼び出し
関数の呼び出しは簡単で、「関数名()」を書くだけで呼び出され、処理を実行してくれます。
<?php function sample(){ echo 'sample関数'; } sample();
sample()という関数が呼び出されて、「sample関数」という文字列が表示されます。
2度呼び出せば、処理は2度実行されます。
sample(); sample();
「sample関数」という文字列が2度表示されます。
引数
関数には、引数というものを指定することができます。
引数とは、呼び出し元から関数にデータを渡したい時に使います。
関数にデータを渡したいってどういう時?と思うかもしれません。
例えば、自転車が交差点を「曲がる」関数を作ったとします。自分で右か左どっちへ曲がるか操作したいはずです。
function turn($direction) { echo $direction . 'へ曲がります。<br/>'; }
関数名の()の部分に変数を書きます。この変数のことを仮引数と言います。
仮引数は、関数内で使うことができる変数です。
今回の場合だと中身を「右」にしたら、「右へ曲がります。」
「左」にしたら、「左へ曲がります。」と関数の実行結果を変えることができます。
この様に、引数に応じて関数の実行結果を変えたい場合に、引数を使用します。
function turn($direction) { echo $direction . 'へ曲がります。<br/>'; } turn('右'); turn('左'); turn('右');
引数が設定してある関数を呼び出す際、()内に値を入れます。
今回は、「’右’」「’左’」「’右’」と入れました。この値のことを実引数と言います。
この実引数は、関数が呼び出された際に、仮引数の中に入ります。
実行結果は、以下になります。
右へ曲がります。
左へ曲がります。
右へ曲がります。
返り値(戻り値)
先程は関数へデータを渡していました。逆に関数からデータを受け取ることができます。
この関数から渡されるデータのことを返り値や戻り値と言います。
function sample() { return 'sample関数<br/>'; }
関数からデータを返したい場合は、returnを使います。
returnを使うと、値を返して、関数の処理は終了します。
上の例は、sample()関数から「sample関数」という値を返しています。
もちろん、返り値を受け取ることができます。
function sample() { return 'sample関数<br/>'; } $result = sample(); echo $result;
sample()関数が呼び出され、「sample関数」という値が返されます。
返された値は、$resultへ入り、$resultの値を表示しています。
「sample関数」と表示されたら成功です。
引数と返り値の応用
先程の引数と返り値は同時に扱うことができます。
例えば、信号の色によって自転車が「前進する」か「止まる」かを決めたい時
function forward($color) { switch ($color) { case '赤': $bicycle = '止まる<br/>'; break; case '青': $bicycle = '前進する<br/>'; break; default: $bicycle = '何もしない<br/>'; break; } return $bicycle; } $result = forward('青'); echo $result; $result = forward('赤'); echo $result;
引数$colorによって返り値$bicycleが変わっていることがわかります。
「青」だと「前進する」、「赤」だと「止まる」という表示になります。
※switch文を忘れてしまった人はこの記事で復習してね!
【PHP入門④】条件分岐
メンバ関数
関数について一通り説明しました。ここで思い出して欲しいのはクラスです。
関数はクラス内に定義することができます。
むしろ、クラス内に書くことが多い為、必ず覚えてください。
ちなみに、クラス内にある関数のことをメンバ関数やクラス関数と呼びます。
メンバ関数の定義
前回の講座で作った、自転車クラスを改造してみます。
class Bicycle { public $pedal; public $color; public function forward($signal_color) { switch ($signal_color) { case '赤': $bicycle = '止まる<br/>'; break; case '青': $bicycle = '前進する<br/>'; break; default: $bicycle = '何もしない<br/>'; break; } return $bicycle; } }
メンバ変数と同様で、メンバ関数の前にもアクセス修飾子をつけます。
記載する場所は、必ずクラス内にしてください。クラスの外だとメンバ関数にはなりません。
※forward()関数の仮引数名を「$signal_color」に変更したので注意!
メンバ関数の使用
メンバ関数の使用は、メンバ変数と同様で、インスタンスを作らないと呼び出せません。
クラスの外でインスタンスを作成し、関数を呼び出してみます。
//インスタンス作成 $bicycle01 = new Bicycle(); //関数呼び出し $result = $bicycle01->forward('青'); echo $result;
メンバ関数でもメンバ変数と同様で「->」を記載します。
Bicycleクラスのforward()関数が呼び出され、$resultに実行結果が入ります。
メンバ変数とメンバ関数の応用
メンバ変数とメンバ関数を定義したので、両方使いたいはずです。
メンバ変数はメンバ関数内で使うことができます。
自転車の色をメンバ変数「$color」の中に入れ、forward()関数で何色の自転車が「止まる」「前進する」のかを表示させます。
class Bicycle { public $pedal; public $color; public function forward($signal_color) { switch ($signal_color) { case '赤': $bicycle = $this->color . '色の自転車が止まる<br/>'; break; case '青': $bicycle = $this->color . '色の自転車が前進する<br/>'; break; default: $bicycle = $this->color . '色の自転車が何もしない<br/>'; break; } return $bicycle; } } //インスタンス作成 $bicycle01 = new Bicycle(); //関数呼び出し $bicycle01->color = '黄'; $result = $bicycle01->forward('青'); echo $result;
メンバ変数をメンバ関数内で使う場合は、「$this->」を記述します。
「$bicycle01->color」に「’黄’」を入れて、「$this->color」と書くことで、関数内で使用しています。
今回だと、「黄色の自転車が前進する」と表示されます。
まとめ
関数について一気に説明しました。
関数が使えることで、クラスがより便利に感じ、プログラミングが一気に楽しくなります。
この機会に是非マスターしてください!
今までの知識も交えているので、忘れている部分があれば、戻って復習してみてください。