ITHACK
~ みんなのIT部門 ~

【PHP】メソッド – インスタンス内部の処理

クラスにはメソッドと呼ばれる処理を定義できます。
メソッドはインスタンスから使える関数のようなイメージです。

ここではメソッドについて解説します。

  • メソッド

メソッドとは

メソッドはインスタンス内部の処理のことです。
オブジェクトが持つ処理を関数のように使い、オブジェクト指向プログラミングでは『振る舞い』などとも呼ばれます。

基本構文

メソッドの基本構文は次の2つあります。

定義

class クラス名 {
    アクセス修飾子 function メソッド名( $引数名 ) {
        // 処理・・・・・・・
        return $変数名または値;
    }
}

メンバーメソッドの定義は関数と同様の構文です。
引数と戻り値は必須ではないため、必要に応じて使うことができます。

また、複数個定義できるため、必要な数だけ増やすことができます。

なお、メソッド名はクラス内で被らなければ良いため、異なるクラスであれば同じメソッド名を定義できます。

アクセス修飾子については、フィールドと同様にpublicprotectedprivateの3種類があります。
それぞれについては別の機会に解説します。ここでは3種類のどれかを記述するということを覚えておきましょう。

呼び出し

$変数名→メソッド名(引数値)

メンバーメソッドを実行するにはアロー演算子()を使います。
インスタンスを記憶した変数とメソッドを繋げて呼び出します。

メソッド(引数)の部分については関数と同様に丸括弧(())に変数または値を記述して、引数を与えることができます。

サンプルコード

メソッドのサンプルコードをご覧ください。

<?php

// クラス
class Person {
    
    // あいさつ文を取得する
    public function greeting( $hour ) {
        
        $message = '';
        
        if( $hour < 11 ) {
            $message = "Good morning!\n";
        } else if( $hour < 15 ) {
            $message = "Good afternoon!\n";
        } else {
            $message = "Good evening!\n";
        }
        
        return $message;
    }
    
}

// インスタンス生成と値の記憶
$watanabe = new Person();

// プロフィールを出力する
$message = $watanabe->greeting(13);

echo $message;

?>
Good afternoon!

“人”を表現するクラスを使ったコードです。

各コードの概要は次のようになります。

行数 概要
4~22 “人”を表現するクラス
7~20 メソッドの定義
25 インスタンス生成
28 メソッドの呼び出し
30 あいさつ文($message)を出力

このようにクラスにメソッドを定義することで、インスタンスを通して処理を実行できます。

演習問題

問題1

次の実行結果になる車クラスを扱うプログラムを作成してください。
なお、下記条件を満たすものとします。

  • 車クラスを作成する
  • 車クラスにforwardメソッドを作成する。
    forwardメソッドは『前進します。』を出力
  • 車クラスにbackwardメソッドを作成する。
    backwardメソッドは『後進します。』を出力
  • メソッドを使って実行結果になるように出力する
前進します。
後進します。

問題2

次の実行結果になる家クラスを扱うプログラムを作成してください。
なお、下記条件を満たすものとします。

  • 家クラスを作成する
  • 家クラスにlockメソッドを作成する。
    lockメソッドは『鍵を閉めました。』を出力
  • 車クラスにunlockメソッドを作成する。
    unlockメソッドは『鍵を開けました。』を出力
  • メソッドを使って実行結果になるように出力する
鍵を閉めました。
鍵を開けました。

まとめ

メソッドはインスタンスの処理です。
クラスに定義することで、インスタンスからメソッドを使えるようになります。

クラスの基礎になりますので覚えていきましょう。