$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キーワードは、methodを呼び出したオブジェクトを参照するために、method内で使用されます。
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 を参照するように設定します。これにより、method はどのオブジェクトのプロパティに access すべきかを認識できます。
別の車のオブジェクトがある場合:
$otherCar = new Car();
$otherCar->color = "Blue";
$otherCar->model = "SUV";
$otherCar->describe(); // 私は青いSUVです重要なポイント:$this は常に、メソッドを呼び出した特定のオブジェクトを指します。メソッドが実行されると、各オブジェクトは独自のコンテキストを持ちます。
チャレンジ
簡単Car クラスに、$this キーワードを使用して車の年式、メーカー、モデルを次の形式で出力する displayInfo というメソッドを追加し、car.php を完成させてください。
"This car is a [year] [make] [model]"
car.php:displayInfoメソッドを追加するCarクラスの定義を含むファイルdriver.php:Carクラスをインポートして使用するメイン実行ファイル(ロック済み)
自分で試してみよう
<?php
require_once 'car.php';
$myCar = new Car();
$myCar->year = 2020;
$myCar->make = "Toyota";
$myCar->model = "Corolla";
$myCar->displayInfo();
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
オブジェクト指向プログラミングのすべてのレッスン
自分で練習してみよう: PHPオンラインコンパイラ