目次
はじめに
今回は、クラス内でメソッドを呼び出す際に使う$thisとself::の違いについて解説します。
例えば、以下のコード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“。
↓分かりやすい記事があったのでこちらを参考にしてみて下さい。
https://hara-chan.com/it/programming/php-self-this-difference/
最後に
いかがでしたでしょうか。
クラス内で関数を呼び出す際は、そのクラスがインスタンス化されるためのものかどうかを考えて使い分けていきたいですね。