Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
17
Help us understand the problem. What is going on with this article?
@yyyykkkk

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

More than 1 year has passed since last update.

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

以上です!!

17
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  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

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
17
Help us understand the problem. What is going on with this article?