使用static::對當前類進行靜態引用時,代表的是執行時最初呼叫的類。static::不能對不屬於方法的類的私有方法進行呼叫。
使用self::或者__class__對當前類進行靜態引用時,代表的是當前方法所在的類。
該方法所從屬的類的物件,php5中,如果是從第二個物件靜態呼叫時,$this也可能引用的是另乙個物件。php7中則沒有此問題。
<?php
class a
public static function test()
public static function bar()
private function foo()
public function testprivate()
}class b extends a
}class c extends a
}b::test();
b::bar();
$b=new b();
$b::test();
$b::bar();
$b->test();
$b->bar();
$c=new c();
$b->testprivate();
$c->testprivate();
?>
Self和self的區別
所有的trait都定義了乙個隱式的型別self,它指當前實現此介面的型別。rust官方文件當self用作函式的第乙個引數時,它等價於self self。self引數等價於self self。mut self引數等價於self mut self。方法引數中的self是一種語法糖,是方法的接收型別 例如...
Swift3 0 Self和self的區別
相信大家都知道self關鍵字的作用,但你知道swift還有個self關鍵字嗎?self關鍵字只能用在類裡,作為函式返回值型別,表示當前類。類定義.png 這段 裡有self和self,self指向類自身 self只能作為函式關鍵字,setvalue函式的返回值是classa型別。我們看到有個warn...
self 和 this 的用法
在訪問php類中的成員變數或方法時,如果被引用的變數或者方法被宣告成const 定義常量 或者static 宣告靜態 那麼就必須使用操作符 反之如果被引用的變數或者方法沒有被宣告成const或者static,那麼就必須使用操作符 另外,如果從類的內部訪問const或者static變數或者方法,那麼就...