Understanding when we chose `self` or `this` for access class members in PHP
`self` and `this` Keyword inside a Class
We use `self` keyword to access static class members and use `$this` for non-static members
class Car
{
/**
* $brake number;
*
*/
public static $brake;
/**
* $speed number;
*
*/
public $speed;
public static function braking($brake) {
self::brake = $brake;
return $this->speed - $brake;
}
}
`self` and `this` keyword on inherited object
In this example, self::who() will always output ‘parent’, while $this->who() will depend on what class the object has.
Now we can see that self refers to the class in which it is called, while $this refers to the class of the current object.
class ParentClass {
function test() {
self::who(); // will output 'parent'
$this->who(); // will output 'child'
}
function who() {
echo 'parent';
}
}
class ChildClass extends ParentClass {
function who() {
echo 'child';
}
}
$obj = new ChildClass();
$obj->test();