首頁 > 後端開發 > php教程 > php中非轉發呼叫以及轉發呼叫的程式碼實例

php中非轉發呼叫以及轉發呼叫的程式碼實例

不言
發布: 2023-04-03 17:54:01
原創
2551 人瀏覽過

這篇文章帶給大家的內容是關於php中非轉發呼叫以及轉發呼叫的程式碼實例,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

靜態存取類別的成員:

1.非轉送呼叫

#1)類別名稱明確(A::funcA())    

#2.轉送呼叫

    1)self::
    2)parent::
    3)static::
    4)forward_static_call()
    5)get_called_class()
登入後複製

注意:
「後期綁定」的意思是說,static:: 不再被解析為定義當前方法所在的類,而是在實際運行時計算的。也可以稱之為“靜態綁定”,因為它可以用於(但不限於)靜態方法的呼叫。

<?php
class A {
    public static function foo() {
        static::who();
    }

    public static function who() {
        echo __CLASS__."\n";
    }
}

class B extends A {
    public static function test() {
        A::foo();
        parent::foo();
        self::foo();
    }

    public static function who() {
        echo __CLASS__."\n";
    }
}
class C extends B {
    public static function who() {
        echo __CLASS__."\n";
    }
}

C::test();
?>
登入後複製
運行結果:
A
C
C
登入後複製
Note:
在非靜態環境下,所呼叫的類別即為該物件實例所屬的類別。由於 $this-> 會在相同作用範圍內嘗試呼叫私有方法,而 static:: 則可能會給出不同結果。另一個差異是 static:: 只能用於靜態屬性。

繼承的財產屬於自己

繼承鏈 優先存取當前類別,依據保留字特性進行存取,然後依據繼承鏈進行存取。

$this 存取成員(呼叫上下文)

self:: 存取成員(解析上下文)

<?php
 
class A{
    protected $value = "A value";
 
    public function printValue(){
        echo $this->value;
    }
}
class B extends A{
   protected $value = "B value";
}
$app = new B();
$app->printValue();
登入後複製
运行结果:B value
登入後複製
<?php
 
class A{
    //只有将属性定义为静态的才能使用self::进行调用
    static protected $value = "A static value ";
    public function printValue(){
        echo self::$value;
    }
}
 
class B extends A{
    static protected $value = "B static value";
}
 
$app = new B();
$app->printValue();
登入後複製
运行结果:A static value
登入後複製
登入後複製
<?php
class A{
    static protected $value = "A static value ";
}
 
class B extends A{
    public function printValue(){
        echo self::$value;
    }
}
$app = new B();
$app->printValue();
登入後複製
运行结果:A static value
登入後複製
登入後複製

相關推薦:

#PHP想要實現頁面跳轉功能具體怎麼操作? (函數標籤範例)

php下拉選單及多層欄位怎麼實現的? (程式碼實測)

php和html結合實作上傳圖片檔案到伺服器的程式碼

以上是php中非轉發呼叫以及轉發呼叫的程式碼實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板