<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ### 對象的賦值 - 對象的賦值與普通的變量,數組的賦值不一樣,變量的賦值是引用賦值(即兩個變量指向同一塊內存空間)。可以通過clone 來創建一個對象的副本 - clone 對象時,是對對象的淺復制,若對象中的屬性也是一個對象的話,clone前后的對象該屬性都是指向同一塊內存空間的。我們可以使用魔術方法__clone克隆時,對屬性在進行克隆一次。 ``` public function __clone() { $this->pro_obj = clone $this->pro_obj } ``` ### require, include, use, require_once - require_once 只會加載同一個文件一次,而require可以加載同一個文件多次 - require 和 include 都是包含文件,區別在于require在找不到文件時會error中斷程序,而include這會warning,程序繼續執行 - use 導入命名空間。 ### 范圍解析符 :: (self::, static::, parent::) ### self, static, $this 的區別 - self 代表當前類 - static 代碼所在的方法被哪個類調用,則就代表那個類 - this 代表當前類的實例 ### new self 和 new static - new self 當前代碼是在哪個類中,就是實例化那個類的實例 - new static 當前代碼所在的方法是被哪個類調用的,則就是實例化那個類的實例 ### static 的靜態訪問 - static定義的方法或屬性,在程序第一次進行加載時,即駐留內存,程序結束時,釋放。 - 通過static申明的變量為靜態變量,是該類的公共變量。第一次使用時即生成,對應該類的所有對象只有一份。是屬于類的,不是屬于對象的。static變量是屬于類而不屬于對象,可以在任何地方通地類來訪問,是類的全局變量,類創建時即存入內存。對多個對象來說,靜態數據成員只存儲一處,可以節省內存。只要對靜態數據成員的值更新一次,保證所有對象存取更新后的相同的值。 - 通過static申明的方法為靜態方法。執行該方法時不會將對象引用傳給函數,所以我們不能訪問非靜態成員,只能訪問靜態方法或靜態變量。只能使用關于類的方式如self static parent等。使用時不用生成對象即可執行 - 靜態方法中不可使用偽變量$this,則可以使用self,static, parent ``` 通過類名訪問:(通過類名只能訪問靜態方法,靜態屬性和部分非靜態方法) 類::靜態方法 類::靜態屬性 類::非靜態方法(方法中不能包含$this) 通過類的實例訪問 實例::靜態屬性 實例::靜態方法 實例->非靜態屬性 實例->非靜態方法或靜態方法 ``` ### final修飾詞 - 若一個類聲明了 final,則這個類不能被繼承 - 若父類中的方法使用了final修飾符, 則該方法不能被子類重寫 ### call_user_func 和 call_user_func_array - 功能都是調用指定的函數,或類方法。區別在于第二個參數。call_user_func_array是已數組的形式傳參。 - 調用方法`call_user_func('test', 'hello', 'world')` `call_user_func_array('test', ['hello', 'world'])` - 調用類方法 `call_user_func(['User', 'test'], 'hello', 'world')` `call_user_func_array(['User', 'test'], ['hello', 'world'])` - 調用靜態方法`call_user_func('User::test', 'hello', 'world')` `class_user_func_array('User::test', ['hello', 'world'])` - 調用對象方法 `call_user_func([$obj, 'test'], 'hello', 'world')` `call_user_func_array([$obj, 'test'], ['hello', 'world'])` ### trait代碼塊
                  <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>

                              哎呀哎呀视频在线观看