PHPでコードを書いていると「$this」をよく見かけるのですがどういう使い方か分からなかったのでまとめてみました。
擬似変数とは一言で言うと
「クラス定義内部であればアクセスできるオブジェクト(インスタンスメソッド)のこと」
最初はこの一文を読んでも「???」だったのでもう少しかみ砕いて言うと
「$thisを使えばスコープ外で定義された変数も使えるよー」ということみたいです。
具体例をコードに沿って
<?php
class FruitClass{
public $fruit = 'Apple';
//メソッドの宣言
public function FruitMethod(){
$fruit = 'Grape';
echo $fruit;
//Grapeが出力
echo $this->fruit;
//Appleが出力
}
}
//インスタンスの生成
$class = new FruitClass();
//メソッドの呼出し
$class->FruitMethod();
?>
比較したかったので
クラス内とメソッド内で同じ変数fruitを使用しました。
まずはFruitクラスの中で変数fruitに'Apple'を代入しています。
この変数fruitこそ
####今回お題になっている$thisを使うことで(クラス内であれば)どこでも呼び出せる変数
になっています。
次にFruitメソッドの中で変数fruitに'grape'を代入しています。
この変数はFruitメソッドの中で定義されているのでメソッド内でしか呼び出すことができません。
そして
echo $fruit;
//Grapeが出力
echo $this->fruit;
//Appleが出力
このような結果となりました。
echo $this->fruit;
は
「クラス内で定義されているfruit変数をechoするよ」
と読み替えることができるのかなと。
擬似変数が効果を発揮するのは
・クラスの中に複数のメソッドがありそれらの中で同じ変数を使いたい時
・上記例コードのようにメンバ変数とローカル変数で同じ変数名を使いたい時
が挙げられると思います。
1点目については変数をまとめることで可読性の向上にも繋がると思います。(2点目についてはあまり頻度は高くないかなと思いますが...)
以上です!!