Where's the difference between self and $this-> in a PHP class or PHP method? Where's the difference between self and $this-> in a PHP class or PHP method? php php

Where's the difference between self and $this-> in a PHP class or PHP method?


$this refers to the instance of the class, that is correct. However, there is also something called static state, which is the same for all instances of that class. self:: is the accessor for those attributes and functions.

Also, you cannot normally access an instance member from a static method. Meaning, you cannot do

static function something($x) {  $this->that = $x;}

because the static method would not know which instance you are referring to.


$this refers to the current object, self refers to the current class. The class is the blueprint of the object. So you define a class, but you construct objects.

So in other words, use self for static and this for non-static members or methods.


self is used at the class-level scope whereas $this is used at the instance-level scope.