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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                為了解決PHP單繼承的限制,出現了trait類,trait是類,但是不能實例化 ### trait優先級(當前類\>trait類\>父類) 當前類中的方法與trait類,父類中的方法重名時,當前類的級別最高,先訪問當前類的方法,然后trait類的優先級又高于父類, 當多個trait類中有同名方法時:會出錯,要用一條規則來區分: use Demo1, Demo2 { Demo1::hello insteadof Demo2; Demo2::hello as Demo2Hello; } 上面的代碼就是將Demo1中的hello方法代替Demo2中的hello方法, Demo2中的hello方法起個別名就可以用了。 ### 容器與依賴注入的原理 * 在thinkphp中容器是典型的一個注冊樹模式。 * 任何的URL訪問,最終都是定位到控制器,由控制器中的某個具體方法去執行 * 一個控制器對應著一個類,如果這些類需要進行統一管理,用容器來進行類管理,還可以將類的實例(對象)做為參數,傳遞給類方法,自動觸發依賴注入。 * 依賴注入:將對象類型的數據,以參數的方式傳到方法的參數列表中 * URL訪問:通過GET方式將數據傳到控制器指定的方法中,但是只能傳字符串、數值。 * 如何傳一個對象到當前方法中:用依賴注入;依賴注入是解決了向類中的方法傳對象的問題。 * 將類綁定到容器中 ```PHP public function bindClass(){ \\think\\Container::set('temp','\\app\\common\\Temp'); $temp = \\think\\Container::get('temp',\['name'=>'jeevin.cn'\]); return $temp->getName(); } ``` * 依賴注入 依賴注入就是將一個類做為參數傳遞給另一個類的方法中,相當于自己實例化了,而依賴的類就可以直接使用注入類中的方法與屬性了。 * 閉包 閉包相當于一個匿名函數,將閉包綁定到容器中: public function bindClosure(){ \\think\\Container::set('demo',function($domain){ return '這是一個bibao'.$domain; }); return \\think\\Container::get('demo',\['domain'=>'htpp://www.jeevin.cn'\]); } > * Facade(門面類) 系統大部分類都用Fa?ade靜態代理了,可以直接引用,為了更加方便,還為這些類起了個別名,可以直接用別名,更加方便,如:use think\\facade\\Request;相當于\\Request。 給類套用一個馬甲,使類具有靜態功能 普通類的靜態代理:如果想靜態調用一個動態類的方法,需要給當前類定義一個靜態代理,首先要繼承think\\Facade類,然后再調用protected static function getFacadeClass(){}就可以靜態代理一個普通類了。 app\\facade\\Test代理了app\\common\\Test 如果不用靜態getFacadeClass獲取,就需要動態綁定 動態綁定用think\\Facade::bind('app\\facade\\Test','app\\common\\Test'); 說白了,靜態代理就是將一個普通的類不需要實例化,直接用靜態方法去調用里面的動態方法。 只需引入think\\Facade; 然后再: protected static function getFacadeClass() { return '你要代理的類';//需要帶上命名空間 } > 注:在tp5中,控制器中可以不繼承父類控制器(Controller),但還是建議繼承,在Controller.php是沒有靜態代理的。
                  <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>

                              哎呀哎呀视频在线观看