52
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHP 擬似変数$thisとは何??

Last updated at Posted at 2019-08-22

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点目についてはあまり頻度は高くないかなと思いますが...)

以上です!!

52
32
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
52
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?