What is $this Variable Vs self?

What is $this Variable Vs self?

$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.
  1. <?php
  2. class Product {
  3.     public $name='ExpertPHP';
  4.     public function aNonStaticMethod() {
  5.         echo $this->name;
  6.     }
  7. }
  8. $p1 = new Product();
  9. $p1->aNonStaticMethod();
  10. ?>

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 keyword

As 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 :
  1. <?php
  2. class Product {
  3.     public static $name='ExpertPHP';
  4.     public function display() {
  5.         echo self::$name;
  6.     }
  7. }
  8. $p1 = new Product();
  9. $p1->display();
  10. ?>

In above example, you can see i have defined a name property as static and to access static property i use self keyword.

Phone: (+91) 8800417876
Noida, 201301