什么时候在PHP使用 self 而不是 $this ?
self和this是两个不同的运算符,分别用于表示当前类和当前对象。 self 用于访问静态或类变量或方法, this 用于访问非静态或对象变量或方法。
所以当需要访问属于类的东西时使用 self ,当需要访问属于类对象的属性时使用 $this 。
self运算符: self运算符表示当前类,因此用于访问类变量或静态变量,因为这些成员属于一个类而不是该类的对象。
句法:
self::$static_member
示例 1:这是显示使用 self运算符的基本示例。
php
php
bar();
?>
php
$non_static_member;
// accessing non-static variable
}
}
new GFG();
?>
php
print();
}
}
class Child extends GFG {
function print() {
echo 'Child Class';
}
}
$parent = new Child();
$parent->bar();
?>
输出:
GeeksForGeeks
示例2:本示例是一个使用self. 在PHP中利用多态行为的演示。
PHP
bar();
?>
输出:
Parent Class:
这里运行父类方法是因为self运算符代表类,因此我们看到主类方法只是父类的方法。
$this运算符: $this,正如“$”符号所暗示的那样,是一个对象。 $this 代表一个类的当前对象。它用于访问类的非静态成员。
句法:
$that->$non_static_member;
示例 1:这是显示 $this运算符使用的基本示例。
PHP
$non_static_member;
// accessing non-static variable
}
}
new GFG();
?>
输出:
GeeksForGeeks
示例 2:此示例是使用 self.php 的PHP中多态行为的演示。
PHP
print();
}
}
class Child extends GFG {
function print() {
echo 'Child Class';
}
}
$parent = new Child();
$parent->bar();
?>
输出:
Child Class
在这里,没有对任何类的引用,并且指向子类的对象正在调用子类中定义的方法。这是PHP中动态多态的一个例子。