婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > PHP中的self關(guān)鍵字詳解

PHP中的self關(guān)鍵字詳解

熱門標(biāo)簽:百度地圖怎樣標(biāo)注圖標(biāo) 咸寧銷售電銷機(jī)器人系統(tǒng) 外呼系統(tǒng)能給企業(yè)帶來(lái)哪些好處 余姚電話機(jī)器人 電銷機(jī)器人問(wèn)門薩維品牌my 百度地圖標(biāo)注偏差 廣東廣州在怎么申請(qǐng)400電話 400電話蘭州申請(qǐng)請(qǐng) 開(kāi)發(fā)地圖標(biāo)注類網(wǎng)站

前言

PHP群里有人詢問(wèn)self關(guān)鍵字的用法,答案是比較明顯的:靜態(tài)成員函數(shù)內(nèi)不能用this調(diào)用非成員函數(shù),但可以用self調(diào)用靜態(tài)成員函數(shù)/變量/常量;其他成員函數(shù)可以用self調(diào)用靜態(tài)成員函數(shù)以及非靜態(tài)成員函數(shù)。隨著討論的深入,發(fā)現(xiàn)self并沒(méi)有那么簡(jiǎn)單。鑒于此,本文先對(duì)幾個(gè)關(guān)鍵字做對(duì)比和區(qū)分,再總結(jié)self的用法。

與parent、static以及this的區(qū)別

要想將徹底搞懂self,要與parent、static以及this區(qū)分開(kāi)。以下分別做對(duì)比。

parent

self與parent的區(qū)分比較容易:parent引用父類/基類被隱蓋的方法(或變量),self則引用自身方法(或變量)。例如構(gòu)造函數(shù)中調(diào)用父類構(gòu)造函數(shù):

class Base {
 public function __construct() {
  echo "Base contructor!", PHP_EOL;
 }
}

class Child {
 public function __construct() {
  parent::__construct();
  echo "Child contructor!", PHP_EOL;
 }
}

new Child;
// 輸出:
// Base contructor!
// Child contructor!

static

static常規(guī)用途是修飾函數(shù)或變量使其成為類函數(shù)和類變量,也可以修飾函數(shù)內(nèi)變量延長(zhǎng)其生命周期至整個(gè)應(yīng)用程序的生命周期。但是其與self關(guān)聯(lián)上是PHP 5.3以來(lái)引入的新用途:靜態(tài)延遲綁定。

有了static的靜態(tài)延遲綁定功能,可以在運(yùn)行時(shí)動(dòng)態(tài)確定歸屬的類。例如:

class Base {
 public function __construct() {
  echo "Base constructor!", PHP_EOL;
 }

 public static function getSelf() {
  return new self();
 }

 public static function getInstance() {
  return new static();
 }

 public function selfFoo() {
  return self::foo();
 }

 public function staticFoo() {
  return static::foo();
 }

 public function thisFoo() {
  return $this->foo();
 }

 public function foo() {
  echo "Base Foo!", PHP_EOL;
 }
}

class Child extends Base {
 public function __construct() {
  echo "Child constructor!", PHP_EOL;
 }

 public function foo() {
  echo "Child Foo!", PHP_EOL;
 }
}

$base = Child::getSelf();
$child = Child::getInstance();

$child->selfFoo();
$child->staticFoo();
$child->thisFoo();

程序輸出結(jié)果如下:

Base constructor!
Child constructor!
Base Foo!
Child Foo!
Child Foo!

在函數(shù)引用上,self與static的區(qū)別是:對(duì)于靜態(tài)成員函數(shù),self指向代碼當(dāng)前類,static指向調(diào)用類;對(duì)于非靜態(tài)成員函數(shù),self抑制多態(tài),指向當(dāng)前類的成員函數(shù),static等同于this,動(dòng)態(tài)指向調(diào)用類的函數(shù)。

parent、self、static三個(gè)關(guān)鍵字聯(lián)合在一起看挺有意思,分別指向父類、當(dāng)前類、子類,有點(diǎn)“過(guò)去、現(xiàn)在、未來(lái)”的味道。

this

self與this是被討論最多,也是最容易引起誤用的組合。兩者的主要區(qū)別如下:

  1. this不能用在靜態(tài)成員函數(shù)中,self可以;
  2. 對(duì)靜態(tài)成員函數(shù)/變量的訪問(wèn),建議 用self,不要用$this::或$this->的形式;
  3. 對(duì)非靜態(tài)成員變量的訪問(wèn),不能用self,只能用this;
  4. this要在對(duì)象已經(jīng)實(shí)例化的情況下使用,self沒(méi)有此限制;
  5. 在非靜態(tài)成員函數(shù)內(nèi)使用,self抑制多態(tài)行為,引用當(dāng)前類的函數(shù);而this引用調(diào)用類的重寫(override)函數(shù)(如果有的話)。

self的用途

看完與上述三個(gè)關(guān)鍵字的區(qū)別,self的用途是不是呼之即出?一句話總結(jié),那就是:self總是指向“當(dāng)前類(及類實(shí)例)”。詳細(xì)說(shuō)則是:

  1. 替代類名,引用當(dāng)前類的靜態(tài)成員變量和靜態(tài)函數(shù);
  2. 抑制多態(tài)行為,引用當(dāng)前類的函數(shù)而非子類中覆蓋的實(shí)現(xiàn);

槽點(diǎn)

  1. 這幾個(gè)關(guān)鍵字中,只有this要加$符號(hào)且必須加,強(qiáng)迫癥表示很難受;
  2. 靜態(tài)成員函數(shù)中不能通過(guò)$this->調(diào)用非靜態(tài)成員函數(shù),但是可以通過(guò)self::調(diào)用,且在調(diào)用函數(shù)中未使用$this->的情況下還能順暢運(yùn)行。此行為貌似在不同PHP版本中表現(xiàn)不同,在當(dāng)前的7.3中ok;
  3. 在靜態(tài)函數(shù)和非靜態(tài)函數(shù)中輸出self,猜猜結(jié)果是什么?都是string(4) "self",迷之輸出;
  4. return $this instanceof static::class;會(huì)有語(yǔ)法錯(cuò)誤,但是以下兩種寫法就正常:
$class = static::class;
return $this instanceof $class;
// 或者這樣:
return $this instanceof static;

所以這是為什么啊?!

參考

When to use self over $this?

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

您可能感興趣的文章:
  • php類中的$this,static,final,const,self這幾個(gè)關(guān)鍵字使用方法
  • PHP中static關(guān)鍵字以及與self關(guān)鍵字的區(qū)別
  • PHP5中的this,self和parent關(guān)鍵字詳解教程

標(biāo)簽:衡陽(yáng) 銅陵 麗江 鷹潭 巴彥淖爾 重慶 十堰 臨沂

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP中的self關(guān)鍵字詳解》,本文關(guān)鍵詞  PHP,中的,self,關(guān)鍵字,詳解,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP中的self關(guān)鍵字詳解》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于PHP中的self關(guān)鍵字詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    成人激情午夜影院| 欧美三级三级三级| 亚洲国产精品一区二区久久| 国产精品毛片a∨一区二区三区| 欧美一区二区大片| 欧美喷水一区二区| 欧美人体做爰大胆视频| 久久综合国产精品| 欧美国产禁国产网站cc| 国产精品丝袜91| 亚洲成人精品在线观看| 亚洲成人av电影在线| 国产成人av电影在线观看| 日本亚洲免费观看| 国精产品一区一区三区mba桃花 | 欧美美女黄视频| 欧美二区乱c少妇| 亚洲欧洲日韩一区二区三区| 亚洲精品美国一| 视频一区视频二区中文| 精品一二线国产| 国产91在线看| 日韩欧美aaaaaa| 国产精品久久久久aaaa樱花| 亚洲大片精品永久免费| 成人福利视频网站| 久久久久九九视频| 亚洲精品国产一区二区精华液| 国产福利一区在线观看| 精品久久久久久久久久久院品网| 中文字幕亚洲综合久久菠萝蜜| 国产精品一线二线三线精华| 91视频免费播放| 日韩一级大片在线观看| 中文字幕制服丝袜成人av| 国产精品自拍三区| 久久久亚洲欧洲日产国码αv| 蜜臀91精品一区二区三区| 99热在这里有精品免费| 日韩一级欧美一级| 另类综合日韩欧美亚洲| 91麻豆国产在线观看| 亚洲美女免费视频| 国产精品一区二区三区网站| 久久久久久久久岛国免费| 国产麻豆欧美日韩一区| 欧美一区二区三区四区高清| 视频一区欧美精品| 日韩亚洲电影在线| 国产伦精品一区二区三区视频青涩| 日韩美女视频在线| 国产专区欧美精品| 中文一区二区在线观看| 91亚洲精品久久久蜜桃网站| 一区二区高清免费观看影视大全| 国产成人自拍在线| 国产精品灌醉下药二区| 在线观看中文字幕不卡| 亚洲欧洲99久久| 欧美性猛交xxxx黑人交| 亚洲色图丝袜美腿| av高清久久久| 亚洲图片欧美视频| 精品久久久久久久久久久久久久久久久| 国产综合一区二区| 17c精品麻豆一区二区免费| 欧美色图12p| 国产在线日韩欧美| 亚洲精品中文字幕乱码三区| 欧美一级夜夜爽| 成人一二三区视频| 中文字幕日韩一区| 91精品麻豆日日躁夜夜躁| 同产精品九九九| 555www色欧美视频| 丁香天五香天堂综合| 亚洲第四色夜色| 国产精品网站在线观看| 欧美日韩免费观看一区三区| 国产精品一区不卡| 亚洲国产欧美在线| 国产日韩欧美一区二区三区乱码| 国产乱子伦视频一区二区三区 | 精品免费一区二区三区| 成人黄色片在线观看| 日韩在线a电影| 日韩一区在线免费观看| 日韩美一区二区三区| 欧美亚洲动漫精品| 成人av高清在线| 激情六月婷婷久久| 午夜激情一区二区三区| 亚洲欧美中日韩| 久久在线观看免费| 欧美一区三区二区| 欧美午夜影院一区| 91天堂素人约啪| 国产999精品久久久久久绿帽| 美美哒免费高清在线观看视频一区二区| 亚洲欧美日本韩国| 国产精品传媒视频| 国产女人aaa级久久久级| 欧美精品一区二区三区久久久| 国产v日产∨综合v精品视频| 日韩电影在线观看一区| 亚洲一区在线观看网站| 欧美成人综合网站| 3d动漫精品啪啪| 欧美日韩不卡在线| 欧美综合一区二区| 91在线视频播放| 美女视频黄 久久| 日本美女一区二区三区视频| 亚洲资源在线观看| 亚洲综合激情另类小说区| 亚洲黄色性网站| 一区二区在线观看免费视频播放 | 亚洲欧美日韩国产另类专区| 国产欧美精品在线观看| 国产欧美综合在线| 中文一区在线播放| 国产精品无码永久免费888| 中文字幕一区日韩精品欧美| 中文字幕一区二区三区不卡| 亚洲女同一区二区| 亚洲综合无码一区二区| 亚洲主播在线播放| 日本成人在线一区| 麻豆视频一区二区| 国产精品亚洲а∨天堂免在线| 国产成人在线电影| 成人激情av网| 欧美日韩一区二区三区在线看| 精品视频在线免费看| 91精品国产综合久久小美女| 日韩精品一区二区三区三区免费| 久久久久久久国产精品影院| 中文字幕在线不卡| 午夜欧美一区二区三区在线播放| 日本aⅴ亚洲精品中文乱码| 依依成人精品视频| 天天综合色天天综合| 国产在线看一区| 91麻豆免费看片| 欧美精品一二三四| 国产视频不卡一区| 精品国产123| 亚洲日本青草视频在线怡红院 | 56国语精品自产拍在线观看| 日韩美一区二区三区| 中文字幕高清一区| 香蕉久久一区二区不卡无毒影院| 免费成人结看片| 成人av网站在线| 日韩午夜av电影| 亚洲欧美日韩国产中文在线| 麻豆精品在线视频| 一本在线高清不卡dvd| www.欧美日韩国产在线| 欧美福利电影网| 亚洲天堂成人在线观看| 蜜臀久久99精品久久久画质超高清 | 欧美日本一区二区三区四区| 欧美激情一二三区| 日韩高清中文字幕一区| 91蜜桃网址入口| 国产欧美日韩中文久久| 婷婷久久综合九色综合绿巨人| 成人免费高清在线观看| 日韩一区二区中文字幕| 一区二区三区四区亚洲| 成人黄色综合网站| 精品久久久久久最新网址| 亚洲图片欧美色图| 91丨porny丨在线| 久久精品视频在线免费观看| 日本午夜一本久久久综合| 色老汉一区二区三区| 欧美精品精品一区| 亚洲女爱视频在线| 成人激情小说乱人伦| 欧美一级日韩不卡播放免费| 夜夜爽夜夜爽精品视频| 成人免费视频一区二区| 国产亚洲欧美中文| 国模冰冰炮一区二区| 欧美一级精品在线| 婷婷久久综合九色综合绿巨人 | heyzo一本久久综合| 337p日本欧洲亚洲大胆精品| 麻豆久久一区二区| 91麻豆精品国产| 手机精品视频在线观看| 欧美日韩国产精品自在自线| 综合分类小说区另类春色亚洲小说欧美| 国产福利一区在线观看| 国产人成一区二区三区影院| 国产91丝袜在线播放九色| 国产日韩欧美电影| 成人黄色一级视频|