PHP 中 static 和 self 的區別

2021-09-11 02:14:29 字數 582 閱讀 8313

使用 self:: 或者 __class__ 對當前類的靜態引用,取決於定義當前方法所在的類:

使用static:: 不再被解析為定義當前方法所在的類,而是在實際執行時計算的。也可以稱之為「靜態繫結」,因為它可以用於(但不限於)靜態方法的呼叫。

靜態繫結是php 5.3.0,增加的乙個功能 用於在繼承範圍內引用靜態呼叫的類

簡單通俗的來說,

self就是寫在哪個類裡面, 實際呼叫的就是這個類.

static代表使用的這個類, 就是你在父類裡寫的static,然後被子類覆蓋,使用的就是子類的方法或屬性

請看列子

<?php

class person

public static function callself()

public static function callstatic()

} class man extends person}

man::callself(); // output: xiaosan

man::callstatic(); // output: gaojin

?>

php中static和self的區別

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

php中static和self的區別

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

php物件導向中self和static的區別

在php的物件導向程式設計中,總會遇到 class test public static function func 可你知道self和static的區別麼?其實區別很簡單,只需要寫幾個demo就能懂 class car protected static function getmodel car ...