PHP static與self和this的區別

2021-08-28 14:13:26 字數 652 閱讀 6779

使用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變數或者方法,那麼就...