
【PHP】$this(擬似変数) – 自インスタンスを記憶する変数
$this(擬似変数)と呼ばれる仕組みがあります。
$thisを使うことでメソッドからフィールドやメソッドにアクセスできるようになります。
ここでは$this(擬似変数)について解説します。
-
$this(擬似変数)
$this(擬似変数)とは
$thisはメソッドで使うことができ、インスタンス自身を取得できる擬似変数です。
$thisはそのメソッドの実行元のインスタンスを取得し、$thisを使ってフィールドやメソッドにアクセスできます。
基本構文
$this(擬似変数)はメソッドでインスタンス自身を取得できる変数です。
この変数を使ってフィールドやメソッドにアクセスできます。
フィールド
$this->フィールド名
メソッド
$this->メソッド名(引数値)
サンプルコード
$this(擬似変数)を使ったサンプルコードをご覧ください。
<?php
// クラス
class Person {
// フィールド(名前)
public $first_name;
public $last_name;
// フィールド(身長)
public $height;
// フィールド(年齢)
public $age;
// プロフィールを出力する
public function profile() {
echo "===== プロフィール =====\n";
echo "名前 : ".$this->full_name()."\n";
echo "身長 : ".$this->height."cm\n";
echo "年齢 : ".$this->age."歳\n";
}
// あいさつ文を取得する
public function full_name() {
$full_name = $this->last_name.' '.$this->first_name;
return $full_name;
}
}
// インスタンス生成と値の記憶
$watanabe = new Person();
$watanabe->first_name = 'You';
$watanabe->last_name = 'Watanabe';
$watanabe->height = 157;
$watanabe->age = 16;
// インスタンス生成と値の記憶
$nishikino = new Person();
$nishikino->first_name = 'Maki';
$nishikino->last_name = 'Nishikino';
$nishikino->height = 161;
$nishikino->age = 15;
// プロフィールを出力する
$watanabe->profile();
$nishikino->profile();
?>
===== プロフィール =====
名前 : Watanabe You
身長 : 157cm
年齢 : 16歳
===== プロフィール =====
名前 : Nishikino Maki
身長 : 161cm
年齢 : 15歳
“人”を表現するPersonクラスを使ったサンプルコードです。
17~19行目で$thisを使っており、各フィールドとメソッドにアクセスしています。
また、$thisはそのインスタンス自身を指すため、$watanabeと$nishikinoのprofileメソッドの$thisが指すインスタンスは異なり、そのため、フィールドに記憶されている値も異なります。
演習問題
次の実行結果になる車クラスを扱うプログラムを作成してください。
なお、下記条件を満たすものとします。
- 車クラスを作成する
- 車クラスのフィールドはナンバー、色、乗車人数とする
- 車情報を出力するinfoメソッドを作成する
===== 車情報 =====
ナンバー : 1234
色 : 紺色
乗車人数 : 5人
===== 車情報 =====
ナンバー : 0987
色 : 赤
乗車人数 : 2人
次の実行結果になる家クラスを扱うプログラムを作成してください。
なお、下記条件を満たすものとします。
- 家クラスを作成する
- 家クラスのフィールドは階数、間取り、完成日とする
- 家情報を出力するinfoメソッドを作成する
===== 家情報 =====
階数 : 1階
間取り : 3LDK
完成日 : 2022/01/25
===== 家情報 =====
階数 : 3階
間取り : 10LDK
完成日 : 2020/03/24
===== 家情報 =====
階数 : 2階
間取り : 5LDK
完成日 : 2021/08/01
まとめ
$this(擬似変数)はインスタンス自身を取得できる変数です。
$thisを使うことで、メソッド内でインスタンス自身のフィールドやメソッドにアクセスできるようになります。
クラスの基礎になるので覚えていきましょう。