MENU

【PHP】$this と selfの違いとは?

目次

はじめに

今回は、クラス内でメソッドを呼び出す際に使う$thisself::の違いについて解説します。

例えば、以下のコード15行目$thisを書かずに実行すると、

Fatal error: Uncaught Error: Call to undefined function isLessThanOnehundred()

となってしまいます。すなわち、クラス内での関数の呼び出しは$thisを使って呼び出すことはご存知の方は多いと思います。

では、self::とはどういう使い分けをすればいいのでしょうか。

Ex: 
...

class Book {

    private $page;

    function __construct($page) 
    {
        $this->page = $page;
    }

    public function countPage(): String
    {
        if ( $this->isLessThanOnehundred($this->page) ) return "few";
        return "many";
    }

    public function isLessThanOnehundred($bookPage) 
    {
        return $bookPage < 100;
    }

}

$this と selfの違いとは

結論からお伝えすると、

“$this” : インスタンス化されたクラス(オブジェクト)内で使用。
“self::” : 複数のオブジェクトを作ること前提で作られたクラスの中で使用。
つまり、newされるクラスは”$this“。

↓分かりやすい記事があったのでこちらを参考にしてみて下さい。

最後に

いかがでしたでしょうか。

クラス内で関数を呼び出す際は、そのクラスがインスタンス化されるためのものかどうかを考えて使い分けていきたいですね。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次