php中static、self、$this的區別有:1、【$this】表示物件的參照,寫在類中的非靜態方法中;2、self和this不同,它指向類本身,不指向任何範例化物件;3、static一般用來存取類中的靜態變數和靜態方法。
php中static、self、$this的區別有:
1、$this
表示物件的參照 $this寫在類中的非靜態方法中, 範例化該類,誰呼叫該方法(一般是物件呼叫)$this則表示該物件的參照。
<?php class Person { public $name; public function getName() { echo $this->name; } } $p = new Person(); $p2 = new Person(); $p->name = "小紅"; $p2->name = "小明"; $p->getName(); // 小紅 $p2->getName(); // 小明
2、self
和 this 不同,它指向類本身,不指向任何範例化物件,一般用來存取類中的靜態變數和靜態方法,也是寫在類中的方法。self寫在哪個類中則表示該類的參照
<?php class Person { public static $name = "小紅"; public static function getName() { echo self::$name; } } $p = new Person(); $p2 = new Person(); $p::getName(); // 小紅 $p2::getName(); // 小紅 $p::$name = "小明"; $p::getName(); // 小明 $p2::getName(); // 小明
3、static
一般用來存取類中的靜態變數和靜態方法,也是寫在類中的方法,也是那個類呼叫該方法static就表示那個類(係結那個類)
<?php class A { public function say() { echo "Hello"; } public function saySelf() { //static 和 self 可以呼叫非靜態方法 不能呼叫非靜態屬性 靜態方法中不能有$this // static 和 self 可以寫在非靜態的方法中 ,可以使用物件呼叫 self::say(); } public function sayStatic() { static::say(); } } class B extends A { public function say() { echo "World"; } } $b = new B(); $b->say(); // World $b->saySelf(); // Hello $b->sayStatic(); // World
以上就是php中static、self、$this的區別有哪些?的詳細內容,更多請關注TW511.COM其它相關文章!