久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      PHP中面向?qū)ο笾甋tatic關(guān)鍵字詳解(代碼實(shí)例)

      本文目標(biāo):

      1、了解static的定義和作用

      2、掌握static的用法和特點(diǎn)

      我們學(xué)習(xí)一個(gè)知識,可以根據(jù)3w1h的思路來學(xué)習(xí),稍微簡單的介紹一下3w1h

      3w1h即

      ● what(是什么)

      ● why(為什么使用它,它有什么作用)

      ● where(使用場景)

      ● how(具體怎么使用)

      (一)、static關(guān)鍵字的定義(what)

      1、被static修飾的屬性或者方法,我們稱之為類的靜態(tài)成員

      (二)、static關(guān)鍵字的作用(why)

      1、讓類的所有實(shí)例都能共享某個(gè)屬性或者方法

      (三)、static使用場景(where)

      1、當(dāng)希望某個(gè)方法或者屬性能被所有實(shí)例共享的時(shí)候,可以考慮static

      (四)、static的使用詳解(how)

      總結(jié):

      1、靜態(tài)屬性的定義 ,直接在屬性定義前加static 比如 static public $name ;

      2、靜態(tài)屬性不能用類的實(shí)例去獲取,而是通過以下方式獲取:

      ● 類名::$屬性名稱

      ● 在類的內(nèi)部,可以通過self::$屬性名稱

      3、靜態(tài)方法的定義,直接在方法定義前加static 比如static public function Hello(){ }

      4、靜態(tài)方法不能用類的實(shí)例去獲取,而是通過以下方式獲取:

      ● 類名::方法名稱

      ● 在類的內(nèi)部,可以通過self::方法名稱

      5、在php中,不能用static修飾類,只能修飾屬性或者方法

      6、靜態(tài)方法內(nèi)部不能調(diào)用非靜態(tài)屬性,只能調(diào)用靜態(tài)屬性

      7、靜態(tài)方法內(nèi)部不能調(diào)用非靜態(tài)方法,只能調(diào)用靜態(tài)方法

      8、非靜態(tài)方法內(nèi)部,既可以調(diào)用非靜態(tài)屬性,也可以調(diào)用靜態(tài)屬性

      9、非靜態(tài)方法內(nèi)部,既可以調(diào)用非靜態(tài)方法,也可以調(diào)用靜態(tài)方法

      所有的總結(jié),都是實(shí)踐得來的,那么接下來,我們用實(shí)際代碼來演示上面的每一條總結(jié),看看他們到底是否正確

      (四)、具體代碼

      案例一:

      實(shí)踐目標(biāo):

      1、靜態(tài)屬性的定義 ,直接在屬性定義前加static 比如 static public $name ;

      2、靜態(tài)屬性不能用類的實(shí)例去獲取,而是通過以下方式獲?。?/p>

      ● 類名::$屬性名稱

      ● 在類的內(nèi)部,可以通過self::$屬性名稱

      <?php   class Human{     static public $name = "人類";//靜態(tài)屬性的定義     public function say(){         echo  "self::name = ".self::$name ."<br/>";     } } //輸出靜態(tài)屬性 echo "名稱為:".Human::$name."<br/>"; $human = new Human(); $human->say(); ?>

      運(yùn)行結(jié)果為:

      PHP中面向?qū)ο笾甋tatic關(guān)鍵字詳解(代碼實(shí)例)

      案例二:

      實(shí)踐目標(biāo):

      1、靜態(tài)方法的定義,直接在方法定義前加static 比如static public function Hello(){ }

      2、靜態(tài)方法不能用類的實(shí)例去獲取,而是通過以下方式獲取:

      ● 類名::方法名稱

      ● 在類的內(nèi)部,可以通過self::方法名稱

      <?php   class Human{     public function __construct(){         self::staticFun1();     }     static public function staticFun1(){         echo "我是靜態(tài)方法<br/>";     } } //輸出靜態(tài)方法 Human::staticFun1(); //運(yùn)行構(gòu)造函數(shù),看是否可以被正常調(diào)用 $human = new Human();  ?>

      運(yùn)行結(jié)果為:

      PHP中面向?qū)ο笾甋tatic關(guān)鍵字詳解(代碼實(shí)例)

      案例三:

      實(shí)踐目標(biāo):

      1、在php中,不能用static修飾類,只能修飾屬性或者方法

      <?php  static class Human{     } ?>

      運(yùn)行結(jié)果為:

      Parse error: syntax error, unexpected 'class' (T_CLASS), expecting :: (T_PAAMAYIM_NEKUDOTAYIM) in D:E-classclass-codeclassingindex.php on line 2

      案例四:

      實(shí)踐目標(biāo):

      1、 靜態(tài)方法內(nèi)部不能調(diào)用非靜態(tài)屬性,只能調(diào)用靜態(tài)屬性

      <?php  class Human{     static public $staticName = "靜態(tài)屬性-人類";     public $commonName="非靜態(tài)屬性-人類";          //定義靜態(tài)方法 靜態(tài)方法調(diào)用非靜態(tài)屬性     static public function staticFun1(){         echo $this->commonName."<br/>";              }     //測試靜態(tài)方法調(diào)用靜態(tài)屬性     static public function staticFun2(){         echo self::$staticName."<br/>";              } } Human::staticFun2();//OK Human::staticFun1();//not OK ?>

      運(yùn)行結(jié)果為:

      靜態(tài)屬性-人類

      Fatal error: Uncaught Error: Using $this when not in object context in D:E-classclass-codeclassingindex.php:8 Stack trace: #0 D:E-classclass-codeclassingindex.php(18): Human::staticFun1() #1 {main} thrown in D:E-classclass-codeclassingindex.php on line 8

      案例五:

      實(shí)踐目標(biāo):

      1、 靜態(tài)方法內(nèi)部不能調(diào)用非靜態(tài)方法,只能調(diào)用靜態(tài)方法

      <?php  class Human{         //定義靜態(tài)方法      //測試靜態(tài)方法調(diào)用 靜態(tài)方法     static public function staticFun1(){         self::staticFun2();         $this->commonFun1();     }     static public function staticFun2(){         echo "我是靜態(tài)方法2<br/>";     }     //普通方法     public function commonFun1(){         echo "我是普通方法1<br/>";     }       } Human::staticFun1(); ?>

      運(yùn)行結(jié)果為:

      我是靜態(tài)方法2

      Fatal error: Uncaught Error: Using $this when not in object context in D:E-classclass-codeclassingindex.php:8 Stack trace: #0 D:E-classclass-codeclassingindex.php(20): Human::staticFun1() #1 {main} thrown in D:E-classclass-codeclassingindex.php on line 8

      案例六:

      實(shí)踐目標(biāo):

      1、非靜態(tài)方法內(nèi)部,既可以調(diào)用非靜態(tài)屬性也可以調(diào)用靜態(tài)屬性

      <?php  class Human{     static public $staticName = "靜態(tài)屬性-人類";     public $name = "非靜態(tài)屬性-人類";      ///普通方法     public function commonFun1(){        echo self::$staticName."<br/>";        echo $this->name."<br/>";     }  } $human = new Human(); $human->commonFun1(); ?>

      運(yùn)行結(jié)果為:

      靜態(tài)屬性-人類
      非靜態(tài)屬性-人類

      案例七:

      實(shí)踐目標(biāo):

      1、非靜態(tài)方法內(nèi)部,既可以調(diào)用非靜態(tài)方法也可以調(diào)用靜態(tài)方法

      <?php  class Human{     ///普通方法     public function commonFun1(){        self::staticFun1();        $this->commonFun2();     }      //測試靜態(tài)方法調(diào)用 靜態(tài)方法     static public function staticFun1(){         echo "我是靜態(tài)方法1<br/>";     }     public function commonFun2(){         echo "我是普通方法2<br/>";     } } $human = new Human(); $human->commonFun1(); ?>

      運(yùn)行結(jié)果為:

      我是靜態(tài)方法1
      我是普通方法2

      (五)、學(xué)以致用

      問題:

      1、所有的NBA球員都有一個(gè)共同的聯(lián)盟總裁,David Stern(大衛(wèi)*斯特恩)

      2、總裁換成了“Adam Silver” 怎么辦?

      大家自己思考一下,再看后面的結(jié)果

      …………………….

      答案揭曉:

      思路分析:

      1、“換”是一個(gè)動(dòng)詞,換總裁,所以是一個(gè)方法,而總裁是一個(gè)數(shù)據(jù),所以是一個(gè)屬性

      2、換總裁要達(dá)到一個(gè)目的就是,換了以后,這個(gè)對象仍然要被其他所有的NBA球員對象使用到

      3、既然 總裁 (屬性) 要被所有的NBA球員對象 共享,那么我們就可以結(jié)合static的作用,將總裁屬性定義為靜態(tài)屬性

      4、所以根據(jù)綜上所述,大概的思路就是定義一個(gè)NBA球員類,然后類里面主要有靜態(tài)屬性“總裁”和一個(gè) 換總裁 的方法

      具體代碼如下:

      <?php  //Nba球員類 class NbaPlayer{     public $name = "";     //構(gòu)造函數(shù)初始化對象     public function __construct($name){         $this->name = $name;     }     //總裁     static public $president = "David Stern";      //換總裁方法     public function changePresident($name){       self::$president = $name;     }  } $jordon = new NbaPlayer("喬丹"); $kebo = new NbaPlayer("科比"); echo "輸出他們目前共同的總裁,總裁為:".NbaPlayer::$president."<br/>";  echo "現(xiàn)在把喬丹總裁換成Adam Silver<br/>"; $jordon->changePresident("Adam Silver"); echo "輸出科比的總裁是否也和喬丹的一樣,科比總裁為:".NbaPlayer::$president."<br/>"; ?>

      運(yùn)行結(jié)果為:

      輸出他們目前共同的總裁,總裁為:David Stern
      現(xiàn)在把喬丹總裁換成Adam Silver
      輸出科比的總裁是否也和喬丹的一樣,科比總裁為:Adam Silver

      總結(jié):

      1、本文主要是講了static關(guān)鍵字的定義和特點(diǎn)

      希望本文能給大家?guī)硪欢ǖ膸椭?,謝謝?。?!

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號