[英]What is different between $this-> and parent:: in OOP PHP?
我編寫這樣的代碼給你一個例子
這是使用“$ this->”
<?php
class A{
public function example(){
echo "A";
}
}
class B extends A{
public function example2(){
$this->example();
}
}
$b = new B();
echo $b->example2();
?>
這是使用父::
<?php
class A{
public function example(){
echo "A";
}
}
class B extends A{
public function example2(){
parent::example();
}
}
$b = new B();
echo $b->example2();
?>
在OOP PHP中$ this->和parent ::之間有什么不同?
不同之處在於您可以訪問基類的功能而不是庫存實現。
class A {
public function example() {
echo "A";
}
public function foo() {
$this->example();
}
}
class B extends A {
public function example() {
echo "B";
}
public function bar() {
parent::example();
}
}
這里有一些測試:
$a=new A();
$a->example(); // echos A
$a->foo(); // echos A
$b=new B();
$b->example(); // echos B
$b->foo(); // echos B
$b->bar(); // echos A
parent::example()
調用父類方法,其中$this->example()
調用當前的類方法。
在您的示例中沒有區別,因為B
類不會覆蓋example()
方法。 寫這樣的東西是很常見的(也許它會幫助你更好地理解這個概念):
class A {
public function example(){
echo 'A';
}
}
class B extends A {
public function example(){
echo 'B';
}
public function example2(){
$this->example();
}
public function example3() {
parent::example();
}
}
$b = new B();
$b->example2();//print B
$b->example3();//print A
簡單來說
$ this是一個實例引用 ,因此無論何時使用$ this,它都會開始引用當前的類方法和屬性。
parent是父引用 ,可用於訪問父類屬性和方法。
parent::
將調用parent::
方法或屬性。 但是,由於這是引用類而不是任何類型的實例,因此您只能調用靜態方法或屬性。 $this->
指的是你調用它的對象的當前實例。
您還可以在對象或靜態方法中引用self::
which引用當前類(再次,此處不涉及實例)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.