self與static的區別

2021-08-04 03:57:51 字數 964 閱讀 7749

static 關鍵字,這裡作為作用域引用。類似於parent, self等關鍵字。與parent和self不同的是,parent 引用的是父類作用域,self引用的是當前類的作用域,而static引用的是全部靜態作用域,子類會覆蓋父類,

<?php

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

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

class person

public static function callself()

public static function callstatic()

}class man extends person

}person::callself();  // output: xiaosan

person::callstatic();  // output: xiaosan

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

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

<?php

/*self - 就是這個類,是**段裡面的這個類。

static - php 5.3加進來的只得是當前這個類,有點像$this的意思,從堆記憶體中提取出來,訪問的是當前例項化的那個類,那麼 static 代表的就是那個類。*/

class a

public static function get_static()

}class b extends a {}

echo get_class(b::get_self()); // a

echo get_class(b::get_static()); // b

echo get_class(a::get_self());//a

echo get_class(a::get_static()); // a

php中self與static的區別

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

self和static的區別

self引用的是當前類,static允許函式呼叫在執行時繫結呼叫類 簡單來說,就是使用self返回的值一直是初始類,而static的繼承類返回的值是離它最近的類內部的資料。舉個例子 self是乙個只認爸媽的小孩,而static是誰帶著它就認誰的小孩 class car protected stati...

php中static和self的區別

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