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 ...