$thisとself::の違いについて

プログラミング

これを読むと

  • $thisとself::の使い方が分かる

$thisについて

$thisは、自分自身の「オブジェクト」で使用できる

<?php

$object = new Sports();
$object->speakingSports();

class Sports {
    
    public $sports = 'baseball' . " ";

    public function sportsName()
    {
        return 'marathon';
    }
    
    function speakingSports() {
        echo $this->sports;
        echo $this->sportsName();
        // echo self::sports;
        // echo self::sportsName();
    }
}
?>

出力結果

baseball marathon

// echo self::sports;
// echo self::sportsName();

のコメントアウトを削除した場合の出力結果

PHP Fatal error:  Uncaught Error: Undefined constant Sports::sports in /workspace/Main.php:17

インスタンス化した際、クラス内のメンバ変数やメソッドを示すことができる。


self::について

自クラスの示すのに使用できる

<?php

$object = new sports();
$object->speakingSports();

class sports {
    
    const SPORTS = 'soccer' . " ";
    public static $sports = 'football';

    function speakingSports() {
        echo self::SPORTS;
        echo self::$sports;
        // echo $this->sports;
        // echo $this->sportsName();
    }
}
?>

出力結果

soccer football

// echo $this->sports;
// echo $this->sportsName();

のコメントアウトを削除した場合の出力結果

Accessing static property sports::$sports as non static in /workspace/Main.php on line 14

self::を使う際には、constやstaticが必要です。

参考記事

https://hara-chan.com/it/programming/php-self-this-difference/

以下、私の同士の記事(こっちの方が分かりやすい(笑))

【PHP】$this と selfの違いとは? | ゆゆゆ blog
はじめに 今回は、クラス内でメソッドを呼び出す際に使う$thisとself::の違いについて解説します。 例えば、以下のコード15行目で$thisを書かずに実行すると、 Fatal error: Uncaught Error: Call t

コメント

タイトルとURLをコピーしました