php中非轉寄調用以及轉寄調用的代碼執行個體

來源:互聯網
上載者:User
本篇文章給大家帶來的內容是關於php中非轉寄調用以及轉寄調用的代碼執行個體,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所協助。

靜態訪問類的成員:

1.非轉寄調用

1)類名明確(A::funcA())

2.轉寄調用

    1)self::    2)parent::    3)static::    4)forward_static_call()    5)get_called_class()

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

<?phpclass 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();?>
運行結果:
ACC
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
<?phpclass 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
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.