PHP中static 跟self的使用區別

2021-08-21 03:35:37 字數 460 閱讀 8749

php中static 和self的使用區別。

首先來看一下self的情況:

<?php

class a

public static function test()

}class b extends a

}a::test();//a

b::test();//a

先來是看一下static的情況:

<?php

class a

public static function test()

}class b extends a

}a::test();//a

b::test();//b

static:如果在子類中重寫了父類中的static方法、屬性,父類就會去訪問了子類的static方法

self: 是類內指標,不管子類有沒有重寫過父類中的方法、屬性都指向本類的靜態方法、屬性

php中self與static的區別

通過一些示例,我們可以很容易看出self和static的區別。假定我們有class car 它有兩個方法,model和getmodel。注意,這裡我們使用了關鍵字self。class car protected static function getmodel 呼叫靜態方法 car model 得到...

php中static和self的區別

在閱讀一些框架的原始碼時發現了new static 和new self 甚是不解,後來查閱資料,才知道static採用了延遲繫結,能準確知道是父類還是子類的呼叫。這就是說static是個聰明的小孩,家裡的親戚的輩分他都能準確的叫出 而不是像他的兄弟self,只知道自己的親爹媽。例子如下 class ...

PHP 中 static 和 self 的區別

使用 self 或者 class 對當前類的靜態引用,取決於定義當前方法所在的類 使用static 不再被解析為定義當前方法所在的類,而是在實際執行時計算的。也可以稱之為 靜態繫結 因為它可以用於 但不限於 靜態方法的呼叫。靜態繫結是php 5.3.0,增加的乙個功能 用於在繼承範圍內引用靜態呼叫的...