本文實(shí)例講述了php 中self,this的區(qū)別和操作方法。分享給大家供大家參考,具體如下:
面向?qū)ο缶幊?OOP,Object OrientedProgramming)現(xiàn)已經(jīng)成為編程人員的一項(xiàng)基本技能。利用OOP的思想進(jìn)行PHP的高級(jí)編程,對(duì)于提高PHP編程能力和規(guī)劃web開(kāi)發(fā)構(gòu)架都是很有意義的。
這里我主要談的是this,self關(guān)鍵字之間的區(qū)別。從字面上來(lái)理解,分別是指這、自己。先初步解釋一下,this是指向當(dāng)前對(duì)象的指針(可以看成C里面的指針),self是指向當(dāng)前類的指針。我們這里頻繁使用指針來(lái)描述
因?yàn)榻?jīng)常用框架的緣故,所以對(duì)php底層的一些運(yùn)行機(jī)制和方法都不會(huì)了,所以最近比較喜歡研究這些底層的東西,寫(xiě)的東西雖然不是很好,但是自己一步步實(shí)地操作過(guò)來(lái)的,理解起來(lái)也比較容易,現(xiàn)在網(wǎng)上大多數(shù)的資料要么就是按照手冊(cè)抄過(guò)來(lái)很官方的一些話,要么就是那些千篇一律的文章,確實(shí)有些不好理解,所以只能自己動(dòng)手來(lái)熟悉啦
一. self
1.self可以訪問(wèn)本類中的靜態(tài)屬性和靜態(tài)方法,可以訪問(wèn)父類中的靜態(tài)屬性和靜態(tài)方法。用self時(shí),可以不用實(shí)例化的
class self_test {
static $instance;
public function __construct(){
self::$instance = 'instance';//靜態(tài)屬性只能通過(guò)self來(lái)訪問(wèn)
}
public function tank(){
return self::$instance;//訪問(wèn)靜態(tài)屬性
}
}
$str = new self_test();
echo $str->tank();
頁(yè)面輸出:
instance
class self_test {
static $instance;
public function __construct(){
self::$instance = 'dell';
}
static public function pentium(){
return self::$instance;//靜態(tài)方法也可以繼續(xù)訪問(wèn)靜態(tài)變量,訪問(wèn)時(shí)需要加$
}
public function tank(){
return self::pentium();//訪問(wèn)靜態(tài)方法pentium()
}
}
$str = new self_test();
echo $str->tank();
頁(yè)面輸出:
dell
2.self可以訪問(wèn)const定義的常量
class self_test {
const NAME = 'tancy';
public function tank(){
return self::NAME;
}
}
$str = new self_test();
echo $str->tank();
頁(yè)面輸出:
tancy
二.this
1.this可以調(diào)用本類中的方法和屬性,也可以調(diào)用父類中的可以調(diào)的方法和屬性,可以說(shuō)除過(guò)靜態(tài)和const常量,基本上其他都可以使用this聯(lián)絡(luò)
class self_test {
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 self_test();
echo $str->tank();
echo "/br>";
echo $str->dell();
echo "/br>";
echo $str->datesrt();
頁(yè)面輸出:
public
private
protected
一句話,self是引用靜態(tài)類的類名,而$this是引用非靜態(tài)類的實(shí)例名。
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語(yǔ)法入門教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:- PHP編程過(guò)程中需要了解的this,self,parent的區(qū)別
- 深入php self與$this的詳解
- php class中self,parent,this的區(qū)別以及實(shí)例介紹
- php self,$this,const,static,-gt;的使用
- php類中的$this,static,final,const,self這幾個(gè)關(guān)鍵字使用方法
- 探討PHP中this,self,parent的區(qū)別詳解
- PHP5中的this,self和parent關(guān)鍵字詳解教程
- PHP中::、-gt;、self、$this幾種操作符的區(qū)別介紹
- PHP中new static()與new self()的區(qū)別異同分析