<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                1.同一命名空間或目錄下 類的實例化與靜態調用,前面不用加目錄或“\” ``` Car::pay() new Car new Car() 加上也可以 \Car::pay() new \Car new \Car() ``` 2. php的類里面$this , self , static都可以指向當前類 $this只能用于指向非靜態成員 static和self則是指向靜態成員 self調用的是聲明時所指向的類 也就是父類的方法 static又叫做延遲靜態綁定? 調用的是最終實例化時所指向的類 示例: $this->a = 2; static::say(); self::say(); 2.5 `new self`和`new static`的區別:兩者都是實例化自身,區別在于繼承。如果沒有繼承,則兩者返回的實例都是屬于一個類;如果有繼承,子類調用該方法,`new self`仍然返回原類的實例,而`new static`返回實際子類的實例。這就是延遲靜態綁定,static 的值,使用的是最后實際調用那個方法的類 2.6 new this是錯誤的,因為this是指向當前對象的指針,而不是類的指針 this是指向當前對象的指針(可以看成C里面的指針),self是指向當前類的指針,parent是指向父類的指針 3.單例模式 new static可以被子類繼承,new self不能被繼承 單例設計模式為了解決在一個應用中只有一個實例【比如數據庫實例】,并且禁止clone 復制 在PHP中可以繼承單例模式來使用單例模式的特性,避免每次創建一個類都要創建一個對象 ``` class Singleton { ? ? private static $instance; ? ? private function __construct() {} ? ? final protected function __clone() {} #不允許被重寫并且會被子類繼承 (1)一般單例模式 ? ? public static function getInstance() ? ? { ? ? ? ? if (! self::$instance instanceof self) { ? ? ? ? ? ? self::$instance = new self(); ? ? ? ? } ? ? ? ? return self::$instance; ? ? } (2)可以被子類繼承 public static function getInstance() ? ? { ? ? ? ? if (! static::$instance instanceof static) { ? ? ? ? ? ? static::$instance = new static(); //static::$instance = new static;可以不帶括號 ? ? ? ? } ? ? ? ? return static::$instance; ? ? } } ``` 4.instanceof 使用這個關鍵字可以確定一個對象是類的實例、類的子類,還是實現了某個特定接口,并進行相應的操作 (1)判斷一個對象是否是某個類的實例,(2)判斷一個對象是否實現了某個接口。 ``` (1) <?php $obj?=?new?A(); if?($obj?instanceof A)?{ ???echo?'A'; } (2) <?php interface?ExampleInterface { ?????public?function?interfaceMethod(); ?} ?class?ExampleClass?implements?ExampleInterface { ?????public?function?interfaceMethod() { ?????????return?'Hello?World!'; ?????} ?} $exampleInstance?=?new?ExampleClass(); ?if($exampleInstance?instanceof?ExampleInterface){ ?????echo?'Yes,?it?is'; ?}else{ ?????echo?'No,?it?is?not'; }? ?> 輸出結果:Yes,?it?is ``` 6.**類中接口的應用** interface 是完全抽象的,只能聲明方法,而且只能聲明 public 的方法,不能聲明 private 及 protected 的方法,不能定義方法體,也不能聲明實例變量 。然而, interface 卻可以聲明常量變量 1.關鍵字:interface 定義接口 (1).類中全部為抽象方法。 (2).抽象方法前不用加abstract。 (3).接口抽象方法屬性為public。 (4).成員屬性必須為常量。 2.關鍵字:implements 調用接口 implements主要是對類名,類所擁有的方法,以及所傳參數起約束和規范做用 ``` <?php interface Cinema { const film = '加勒比海盜'; public function show(); } class Order implements Cinema { public function show() { echo "影院 接口開放了<br>"; } } $face = new Order(); echo $face->show(); echo Cinema::film; 說明:上面的例子要注意一點,接口的方法名是show,繼承接口的類中必須有show這個方法,不然就會報錯。也就是說接口的方法是假的,真正起作用的是在繼承的類中的方法 ``` 7.self::class 和 static::class獲取當前類名 又或者P::class得到p的完整類名 在 PHP 類中,self指向的是當前方法存在的這個類,也就是父類。static指向的是最終那個子類 ``` class P { public static function getParent() { return self::class; } public static function getChild() { return static::class; } } class C extends P { } echo C::getParent(), PHP_EOL; echo C::getChild(), PHP_EOL; 運行結果:P,C ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看