$this
is a pseudo-variable which is a reference to the current object.
$this
is mostly used in object oriented code.
$this
variable is used to call non-static method, if you are trying to call static method then it will throw the error that means $this variable is not available inside the static method.
Error that you will get while calling a static property or method using $this variable :
Fatal error: Uncaught Error: Using $this when not in object context in .. on line
Note: Calling non-static methods statically in PHP 7 is deprecated that will generate an E_DEPRECATED warning. So i assume it may be removed in the future to call non-static methods statically.
- <?php
- class Product {
- public $name='ExpertPHP';
- public function aNonStaticMethod() {
- echo $this->name;
- }
- }
- $p1 = new Product();
- $p1->aNonStaticMethod();
- ?>
In above example, i have created a Product class with non static method and initialize a object to call aNonStaticMethod to display name property which is declared as public. Here i use $this variable to access public property declared within class.
self keywordAs you notice, this keyword is proceed with $ sign but self keyword is not proceed with any symbol.
With self keyword, you use scope resolution operator.
self keyword with scope resolution operator (::) you can call static method or properties of a class.
self keyword basically refer to current class name within a class.
Example :
- <?php
- class Product {
- public static $name='ExpertPHP';
- public function display() {
- echo self::$name;
- }
- }
- $p1 = new Product();
- $p1->display();
- ?>
In above example, you can see i have defined a name property as static and to access static property i use self keyword.