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

主頁 > 知識庫 > PHP面向對象程序設計中的self、static、parent關鍵字用法分析

PHP面向對象程序設計中的self、static、parent關鍵字用法分析

熱門標簽:高德地圖標注家 外呼系統撥打暫時無法接通 江西手機自動外呼防封系統是什么 廣東地市地圖標注 長春人工外呼系統服務商 怎么向銷售公司推銷外呼系統 廣州防封卡外呼系統多少錢一個月 哪里辦理400電話 仁和怎么申請400開頭的電話

本文實例講述了PHP面向對象程序設計中的self、static、parent關鍵字用法.分享給大家供大家參考,具體如下:

看到php里面有關于后期靜態綁定的內容,雖然沒有完全看懂,但是也收獲不少東西。

php官方手冊介紹:
http://php.net/manual/zh/language.oop5.late-static-bindings.php

不存在繼承的時候

不存在繼承的意思就是,就書寫一個單獨的類來使用的時候。self和static在范圍解析操作符 (::) 的使用上,并無區別。

  • 在靜態函數中,self和static可以調用靜態屬性和靜態函數(沒有實例化類,因此不能調用非靜態的屬性和函數)。
  • 在非靜態函數中,self和static可以調用靜態屬性和靜態函數以及非靜態函數

此時,self和static的表現是一樣的,可以替換為該類名::的方式調用。

?php
class Demo{
 public static $static;
 public $Nostatic; 
 public function __construct(){
  self::$static = "static";
  $this->Nostatic = "Nostatic";
 }
 public static function get(){
  return __CLASS__;
 }
 public function show(){
  return "this is function show with ".$this->Nostatic;
 }
 public function test(){
  echo Demo::$static."br/>"; //使用類名調用靜態屬性
  echo Demo::get()."br/>"; //使用類名調用靜態屬性
  echo Demo::show()."br/>"; //使用類名調用靜態屬性
  echo self::$static."br/>"; //self調用靜態屬性
  echo self::show()."br/>"; //self調用非靜態方法
  echo self::get()."br/>"; //self調用靜態方法
  echo static::$static."br/>";//static調用靜態屬性
  echo static::show()."br/>";//static調用非靜態方法
  echo static::get()."br/>"; //static調用靜態方法
 }
}
$obj = new Demo();
$obj->test();

輸出結果:

static
Demo
this is function show with Nostatic
static
this is function show with Nostatic
Demo
static
this is function show with Nostatic
Demo

繼承的時候

在繼承時,self和static在范圍解析操作符 (::) 的使用上有差別。parent也是在繼承的時候使用的。

?php
class A{
 static function getClassName(){
  return "this is class A";
 }
 static function testSelf(){
  echo self::getClassName();
 }
 static function testStatic(){
  echo static::getClassName();
 }
}
class B extends A{
 static function getClassName(){
  return "this is class B";
 }
}
B::testSelf();
echo "br/>";
B::testStatic();

輸出結果:

this is class A
this is class B

self調用的靜態方法或屬性始終表示其在使用的時候的當前類(A)的方法或屬性,可以替換為其類名,但是在類名很長或者有可能變化的情況下,使用self::的方式無疑是更好的選擇。

static調用的靜態方法或屬性會在繼承中被其子類重寫覆蓋,應該替換為對應的子類名(B)。

parent關鍵字用于調用父類的方法和屬性。在靜態方法中,可以調用父類的靜態方法和屬性;在非靜態方法中,可以調用父類的方法和屬性。

?php
class A{
 public static $static;
 public $Nostatic; 
 public function __construct(){
  self::$static = "static";
  $this->Nostatic = "Nostatic";
 }
 public static function staticFun(){
  return self::$static;
 }
 public function noStaticFun(){
  return "this is function show with ".$this->Nostatic;
 }
}
class B extends A{
 static function testS(){
  echo parent::staticFun();
 }
 function testNoS(){
  echo parent::noStaticFun();
 }
}
$obj = new B();
$obj->testS();
echo "br/>";
$obj->testNoS();

輸出結果

static
this is function show with Nostatic

在文章的最后,我們分析一個手冊上的例子

?php
class A {
 public static function foo() {
  static::who();
 }
 public static function who() {
  echo __CLASS__."\n";
 }
}
class B extends A {
 public static function test() {
  A::foo();
  parent::foo();
  self::foo();
 }
 public static function who() {
  echo __CLASS__."\n";
 }
}
class C extends B {
 public static function who() {
  echo __CLASS__."\n";
 }
}
C::test();
?>

輸出結果

A
C
C

我們單獨拿出test方法進行分析:

public static function test() {
  A::foo();
  parent::foo();
  self::foo();
}

1)A::foo();這個語句是可以在任何地方執行的,它表示使用A去調用靜態方法foo()得到'A'。

2)parent::foo();C的parent是B,B的parent是A,回溯找到了A的foo方法;static::who();語句中的static::調用的方法會被子類覆蓋,所以優先調用C的who()方法,如果C的who方法不存在會調用B的who方法,如果B的who方法不存在會調用A的who方法。所以,輸出結果是'C'。[注1]

3)self::foo();這個self::是在B中使用的,所以self::等價于B::,但是B沒有實現foo方法,B又繼承自A,所以我們實際上調用了A::foo()這個方法。foo方法使用了static::who()語句,導致我們又調用了C的who函數。[注2]

注1:補充解釋上面的(2)

?php
class A {
 public static function foo() {
  static::who();
 }
 public static function who() {
  echo __CLASS__."\n";
 }
}
class B extends A {
 public static function test() {
  A::foo();
  parent::foo();
  self::foo();
 }
 public static function who() {
  echo __CLASS__."\n";
 }
}
class C extends B {
 // public static function who() {
 //  echo __CLASS__."\n";
 // }
}
C::test();
?>

輸出結果:

A B B

注2:補充解釋上面的(3)

?php
class A {
 public static function foo() {
  static::who();
 }
 public static function who() {
  echo __CLASS__."\n";
 }
}
class B extends A {
 public static function test() {
  A::foo();
  parent::foo();
  self::foo();
 }
 public static function foo() {
  echo "fooB"."\n";
 }
 public static function who() {
  echo __CLASS__."\n";
 }
}
class C extends B {
 public static function foo() {
  echo "fooC"."\n";
 }
 public static function who() {
  echo __CLASS__."\n";
 }
}
C::test();
?>

輸出結果:

A C fooB

更多關于PHP相關內容感興趣的讀者可查看本站專題:《php面向對象程序設計入門教程》、《PHP數組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • PHP的new static和new self的區別與使用
  • php面向對象程序設計中self與static的區別分析
  • PHP面向對象中new self()與 new static()的區別淺析
  • 淺談PHP中new self()和new static()的區別
  • PHP Class self 與 static 異同與使用詳解

標簽:濮陽 湘西 惠州 文山 黔東 廈門 梅河口 海北

巨人網絡通訊聲明:本文標題《PHP面向對象程序設計中的self、static、parent關鍵字用法分析》,本文關鍵詞  PHP,面向,對象,程序設計,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP面向對象程序設計中的self、static、parent關鍵字用法分析》相關的同類信息!
  • 本頁收集關于PHP面向對象程序設計中的self、static、parent關鍵字用法分析的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    久久中文字幕电影| 亚洲成人自拍一区| 亚洲国产人成综合网站| 国产真实乱偷精品视频免| 欧美性受xxxx黑人xyx性爽| 久久九九99视频| 六月丁香婷婷久久| 欧美日韩第一区日日骚| 亚洲色图制服丝袜| 成人丝袜高跟foot| 久久这里只有精品6| 日韩—二三区免费观看av| 欧美在线视频你懂得| 国产精品久久久久久久久图文区| 久久电影网电视剧免费观看| 欧美在线影院一区二区| 亚洲精品欧美激情| 99国内精品久久| 日本一区二区动态图| 国产精品自拍av| 精品国产乱码久久久久久影片| 亚洲福利视频三区| 欧美中文字幕不卡| 亚洲综合无码一区二区| 色噜噜狠狠色综合欧洲selulu | 国产.欧美.日韩| 久久久蜜桃精品| 精品一区二区久久久| 精品国产在天天线2019| 久久精品久久精品| 久久久久久一二三区| 国模无码大尺度一区二区三区| 精品国精品国产尤物美女| 精品制服美女久久| 精品国一区二区三区| 国模少妇一区二区三区| 国产女人水真多18毛片18精品视频| 国产成人精品免费在线| 亚洲视频免费看| 欧美午夜电影在线播放| 日韩激情视频网站| 欧美精品一区二区久久久| 国产精品小仙女| 亚洲私人黄色宅男| 欧美三区免费完整视频在线观看| 亚洲成人777| 欧美电影免费观看高清完整版在| 国产在线不卡视频| 中文字幕一区二区三区视频| 一本到高清视频免费精品| 亚洲成人自拍偷拍| 久久久精品国产免费观看同学| 99久久99精品久久久久久| 亚洲一区二区不卡免费| 精品捆绑美女sm三区| jvid福利写真一区二区三区| 亚洲宅男天堂在线观看无病毒| 日韩三级视频中文字幕| 99亚偷拍自图区亚洲| 午夜电影久久久| 久久久久久久网| 欧美午夜精品久久久| 国产在线不卡一区| 亚洲电影第三页| 国产三级三级三级精品8ⅰ区| 色综合天天天天做夜夜夜夜做| 日本不卡一区二区| 亚洲欧美综合色| 精品国产露脸精彩对白| 91在线丨porny丨国产| 蜜桃久久精品一区二区| 亚洲视频免费看| 久久久久久黄色| 欧美日韩一区不卡| 国产.欧美.日韩| 日本vs亚洲vs韩国一区三区| 国产精品成人免费在线| 精品国产免费一区二区三区香蕉| 91视频在线观看| 国内精品写真在线观看| 天堂资源在线中文精品| 亚洲欧美国产77777| 26uuu久久天堂性欧美| 欧美浪妇xxxx高跟鞋交| 色诱亚洲精品久久久久久| 国产成人久久精品77777最新版本| 午夜国产不卡在线观看视频| 亚洲免费在线电影| 亚洲国产精品精华液ab| 精品国产髙清在线看国产毛片| 欧美欧美欧美欧美| 在线视频欧美精品| 91香蕉视频mp4| www.av精品| 懂色av噜噜一区二区三区av| 麻豆视频观看网址久久| 热久久国产精品| 日本欧美大码aⅴ在线播放| 亚洲一级片在线观看| 亚洲日本va午夜在线电影| 国产情人综合久久777777| 精品国产伦一区二区三区免费 | 日本中文字幕不卡| 亚洲韩国精品一区| 亚洲一区二区三区国产| 尤物av一区二区| 亚洲一区二区三区自拍| 中文字幕在线观看一区| 欧美激情一区二区三区在线| 国产亚洲一区二区三区| 国产日韩欧美精品在线| 亚洲国产高清在线| 中文字幕精品三区| 中文一区二区在线观看| 亚洲欧洲精品成人久久奇米网| 最新不卡av在线| 亚洲一区在线视频观看| 亚洲成人av中文| 久久机这里只有精品| 国产一区二区剧情av在线| 国产成人免费视频精品含羞草妖精| 高清不卡在线观看av| 成人av影视在线观看| 91极品美女在线| 4438亚洲最大| 国产夜色精品一区二区av| 中文字幕在线不卡一区二区三区| 亚洲欧美另类在线| 日韩国产精品久久久久久亚洲| 精品在线观看免费| 成人性生交大片免费看在线播放| 色综合婷婷久久| 欧美一区二区精品久久911| 欧美精品一区二区精品网| 国产女主播一区| 亚洲午夜私人影院| 久久99久久精品欧美| av动漫一区二区| 欧美一级在线观看| 国产精品灌醉下药二区| 首页国产欧美日韩丝袜| 国产成人亚洲综合色影视| 欧美性三三影院| 久久婷婷成人综合色| 一区二区三区中文在线观看| 麻豆一区二区三区| 91首页免费视频| 欧美一区二区不卡视频| 中文字幕在线不卡一区| 精品一区二区三区影院在线午夜| 99久久综合精品| 久久久午夜精品理论片中文字幕| 一区二区三区91| 丁香亚洲综合激情啪啪综合| 欧美日韩国产美女| 国产精品美女久久久久久久 | 久久久久久夜精品精品免费| 一区二区三区中文在线| 粉嫩13p一区二区三区| 欧美三级三级三级爽爽爽| 国产精品网曝门| 久久av老司机精品网站导航| 欧美中文字幕不卡| 国产精品免费久久久久| 精品一区二区三区免费观看| 欧美视频你懂的| 亚洲人吸女人奶水| 国产成人免费在线观看| 欧美电视剧免费全集观看| 亚洲v中文字幕| 色婷婷综合五月| 国产精品久久久一本精品| 国产一区二区主播在线| 欧美一级xxx| 五月天亚洲精品| 欧美中文字幕一二三区视频| 亚洲丝袜另类动漫二区| 成人深夜福利app| 久久精品人人做人人爽97 | 青青青爽久久午夜综合久久午夜| 91捆绑美女网站| 亚洲视频免费在线观看| 波多野结衣精品在线| 国产精品乱码人人做人人爱 | 色老汉av一区二区三区| 国产精品毛片大码女人| 粉嫩在线一区二区三区视频| 久久久国产午夜精品| 激情亚洲综合在线| 久久日韩精品一区二区五区| 国内精品伊人久久久久av影院 | 亚洲国产va精品久久久不卡综合| 91色porny| 亚洲一区二区精品视频| 欧美日韩一区二区欧美激情| 午夜视频在线观看一区二区| 欧美欧美欧美欧美首页| 蜜臀av在线播放一区二区三区| 日韩亚洲欧美中文三级| 极品销魂美女一区二区三区|