PHP this、self與static的區別


/**
* 父類P中 獲取子類C的類名
*/
class P
{
public static function getParent()
{
return self::class;
}

public static function getChild()
{
return static::class;
}

public function getClassName(){
echo __CLASS__; // 獲取當前的類名
}

public function getThis(){
var_dump($this);
}
}

class C extends P
{

}

echo C::getParent(), PHP_EOL; // P
echo C::getChild(), PHP_EOL; // C
echo (new C())->getClassName(), PHP_EOL; // P
echo (new C())->getThis(), PHP_EOL; // C
/*
總結:
* 1.在 PHP 里,在沒有繼承時候,你用self::class 和 static::class是一樣的,都是獲取當前類名。
* 2.如果用到了繼承,並且這個方法寫在了父類里,你想要分別獲取當前父類名和未知的子類名,就要按照下面的方法進行獲取。
* 在 PHP 類中,self指向的是當前方法存在的這個類,也就是父類。static指向的是最終那個子類
* 3.this也有static的效果,只不過區別一個是非靜態一個是靜態
*/

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM