プログラミング言語

【PHP入門⑩】関数 ~初心者でも安心!基礎から学べるプログラミング講座~

プログラミング言語

※前回の講座がまだの人はこちら
【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」と書くことで、関数内で使用しています。
今回だと、「黄色の自転車が前進する」と表示されます。

まとめ

関数について一気に説明しました。
関数が使えることで、クラスがより便利に感じ、プログラミングが一気に楽しくなります。
この機会に是非マスターしてください!
今までの知識も交えているので、忘れている部分があれば、戻って復習してみてください。

次回講座:継承
【PHP入門⑪】継承 ~初心者でも安心!基礎から学べるプログラミング講座~

タイトルとURLをコピーしました