Help us understand the problem. What is going on with this article?

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

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

以上です!!

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away