self與$this的功能極為相似,但二者又不相同。 $this不能引用靜態成員和常數。 self更像類別本身,而$this更像是實例本身。
一. self
# 1.self可以存取本類別中的靜態屬性和靜態方法,可以存取父類別中的靜態屬性和靜態方法。用self時,可以不用實例化的
<?php class selfStuP{ static $instance; public function __construct(){ self::$instance = 'instance'; //静态属性只能通过self来访问 } public function tank(){ return self::$instance; //访问静态属性 } } $str = new selfStuP(); echo $str->tank(); echo "\n"; ?>
頁面輸出:instance
<?php class selfStuP{ static $instance; public function __construct(){ self::$instance = 'dell'; //静态属性只能通过self来访问 } static public function pentium(){ return self::$instance; //静态方法也可以继续访问静态变量,访问时需 要加$ } public function tank(){ return self::pentium(); //访问静态属性 } } $str = new selfStuP(); echo $str->tank(); echo "\n"; ?>
頁面輸出:dell
##2.self可以存取const定義的常數
<?php class selfStuP{ const NAME = 'tancy'; public function tank(){ return self::NAME; } } $str = new selfStuP(); echo $str->tank(); echo "\n"; ?>頁面輸出:tancy
#二.this
##1.this可以呼叫本類別中的方法和屬性,也可以呼叫父類別中的可以調的方法和屬性,可以說除過靜態和const常數,基本上其他都可以使用this聯絡<?php
class thisStu{
public $public;
private $private;
protected $protected;
public function __construct(){
$this->public = 'public';
$this->private = 'private';
$this->protected = 'protected';
}
public function tank(){
return $this->public;
}
public function dell(){
return $this->private;
}
public function datesrt(){
return $this->protected;
}
}
$str = new thisStu();
echo $str->tank();
echo "\n";
echo $str->dell();
echo "\n";
echo $str->datesrt();
echo "\n";
?>
頁輸出:
public
private protected
##self而$this是引用非靜態類別的實例名。
相關推薦:
PHP 中self、static、$this 的區別與後期靜態綁定詳解
以上是php中self與this的使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!