Menu
Coddy logo textTech

$thisキーワード

CoddyのPHPジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 4/91。

$thisキーワードは、クラスのメソッド内において、そのクラスの現在のインスタンスを指します。これを使用することで、現在のオブジェクトのプロパティにアクセスしたり、変更したりすることができます。

以下は、$this を使用したメソッドを持つクラスの例です。

<?php
class Car {
    public $color;
    public $model;

    public function honk() {
        echo "Beep beep!\n";
    }

    public function describe() {
        echo "I am a " . $this->color . " " . $this->model . "\n";
    }
}

$thisキーワードは、メソッド内でそのメソッドを呼び出したオブジェクトを参照するために使用されます。

carオブジェクトを作成し、プロパティを設定します:

$myCar = new Car();
$myCar->color = "Red";
$myCar->model = "Sedan";

次に、メソッドを呼び出します:

$myCar->honk();
$myCar->describe();

出力:

Beep beep!
I am a Red Sedan

$myCar->describe()を呼び出すと、PHPは自動的に$this$myCarを参照するように設定します。これにより、メソッドはどのオブジェクトのプロパティにアクセスすべきかを判断します。

別の car オブジェクトがある場合は、次のようになります:

$otherCar = new Car();
$otherCar->color = "Blue";
$otherCar->model = "SUV";
$otherCar->describe(); // I am a Blue SUV

重要なポイント: $this は常に、そのメソッドを呼び出した特定のオブジェクトを指します。メソッドが実行される際、各オブジェクトは独自のコンテキストを持ちます。

challenge icon

チャレンジ

簡単

car.php 内の Car クラスを完成させてください。$this キーワードを使用して、車の year、make、model を以下の形式で出力する displayInfo という名前のメソッドを追加します。

"This car is a [year] [make] [model]"

  • car.php: displayInfo メソッドを追加する Car クラスの定義が含まれています
  • driver.php: Car クラスをインポートして使用するメインの実行ファイルです(編集不可)

チートシート

$this キーワードは、クラスのメソッド内からそのクラスの現在のインスタンスを参照し、現在のオブジェクトのプロパティへのアクセスや変更を可能にします。

クラス内での $this の使用例:

<?php
class Car {
    public $color;
    public $model;

    public function describe() {
        echo "I am a " . $this->color . " " . $this->model . "\n";
    }
}

オブジェクトの作成とメソッドの呼び出し:

$myCar = new Car();
$myCar->color = "Red";
$myCar->model = "Sedan";
$myCar->describe(); // I am a Red Sedan

$myCar->describe() を呼び出すと、PHP は自動的に $this$myCar を参照するように設定します。メソッドが実行される際、各オブジェクトは独自のコンテキストを持つため、$this は常にそのメソッドを呼び出した特定のオブジェクトを参照します。

自分で試してみよう

<?php
require_once 'car.php';

$myCar = new Car();
$myCar->year = 2020;
$myCar->make = "Toyota";
$myCar->model = "Corolla";

$myCar->displayInfo();
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

オブジェクト指向プログラミングのすべてのレッスン