<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國際加速解決方案。 廣告
                ### :-: **iThink里的依賴注入實現** **在序言中筆者曾提及iThink擁有一套自定義的依賴注入機制,利用這套機制,可以使我們在開發的過程中十分方便的拿到各種層級的實例,只要可以通過model函數調用得到的對象,都可以通過調用一個屬性得到,這里我們深入解讀一下這套機制的實現原理。** > ![](https://box.kancloud.cn/b150e47a76a0ef71815a2275e15de200_681x175.png) > ![](https://box.kancloud.cn/5368bead232d8281034dc3561a334a72_708x274.png) 觀察打印出來的結果,2411 行和 2422 行用兩個不同的方式都得到了 app\common\logic\Config 這個對象,用全等比較,返回的是 treu。使用的 model函數方式實例化模型大家一定很熟悉,那么上面的 $this->logic__common_Config 是怎么得到這個模型的? 這里需要兩個知識點,一個是__get 方法的原理,一個是trait的使用 在一個類中調用他不存在的屬性時,他會自動調用 __get 方法,將調用的屬性做參數傳入,由我們自行編寫處理的邏輯,利用這個機制,我們就可以實現一套依賴注入的機制了 我們請求這個方法 ![](https://box.kancloud.cn/a87e1e14e0a00f9f56c7295269211345_801x208.png) 將請求斷點設置在2411行,當我在斷點處讓代碼繼續執行時,由于前面沒有定義這個 logic__common_Config 屬性,毫無疑問代碼會走到 __get 方法里去,因此,我們在基類里定義了 __get 方法,跟進 ![](https://box.kancloud.cn/ae6b13303fa32013281a557a6b6ce2f4_1188x920.png) logic__common_Config 會作為參數傳入,在 127 行用正則對其進行了解析,解析后的結果為上圖的 $result 變量,然后我們對這幾個參數進行了重組,在 144 行和 148行進行了計算,得到 $layerName 和 $modelName 兩個參數,直接吧這兩個參數傳入到 model 方法即可得到我們需要的實例,和手動調用 model 得到的結果意義,只不過這個過程被 __get 替我們做了,至此,我們在控制器里就可以直接使用這種方法實例化模型了 其實這個__get方法就是寫在 trait 里,而控制器,模型,驗證器,等基類都引入了這個 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>

                              哎呀哎呀视频在线观看