Home > Article > Backend Development > What are the differences between static, self, and $this in PHP?
The differences between static, self, and $this in php are: 1. [$this] represents a reference to the object, written in a non-static method in the class; 2. Self is different from this, it points to the class itself , does not point to any instantiated object; 3. static is generally used to access static variables and static methods in a class.
The differences between static, self, and $this in php are:
1, $this
Represents a reference to an object. $this is written in a non-static method in a class. When the class is instantiated, whoever calls the method (usually an object call) $this represents a reference to the object.
<?php class Person { public $name; public function getName() { echo $this->name; } } $p = new Person(); $p2 = new Person(); $p->name = "小红"; $p2->name = "小明"; $p->getName(); // 小红 $p2->getName(); // 小明
2. self
is different from this. It points to the class itself and does not point to any instantiated object. Generally used to access static variables and static methods in a class, and are also methods written in the class. Which class self is written in indicates the reference of the class
<?php class Person { public static $name = "小红"; public static function getName() { echo self::$name; } } $p = new Person(); $p2 = new Person(); $p::getName(); // 小红 $p2::getName(); // 小红 $p::$name = "小明"; $p::getName(); // 小明 $p2::getName(); // 小明
3, static
Generally used to access static variables and static methods in a class, which are also methods written in the class. When the class calls the method, static means that class (binding that class)
<?php class A { public function say() { echo "Hello"; } public function saySelf() { //static 和 self 可以调用非静态方法 不能调用非静态属性 静态方法中不能有$this // static 和 self 可以写在非静态的方法中 ,可以使用对象调用 self::say(); } public function sayStatic() { static::say(); } } class B extends A { public function say() { echo "World"; } } $b = new B(); $b->say(); // World $b->saySelf(); // Hello $b->sayStatic(); // World
Related learning recommendations: PHP programming from entry to proficiency
The above is the detailed content of What are the differences between static, self, and $this in PHP?. For more information, please follow other related articles on the PHP Chinese website!