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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 注冊樹模式 ## 注冊樹模式 #### 注冊樹模式是通過將對象實例注冊到一個全局的對象樹上 #### 需要的時候從對象樹上采摘下來使用 ## 為了簡化 依然是把類名寫到extend目錄下 創建 YueRegister類文件(簡單邏輯 包括 掛載。讀取。和刪除) ``` <pre class="calibre13">``` <span class="token"><</span><span class="token">?</span>php <span class="token2">class</span> <span class="token3">YueRegister</span> <span class="token1">{</span> <span class="token6">/** 簡單注冊樹模式設計代碼 * 注冊樹池子 后續會把實例對象注冊到objects中 */</span> <span class="token2">protected</span> <span class="token2">static</span> $objects <span class="token">=</span> <span class="token2">null</span><span class="token1">;</span> <span class="token6">// 將對象掛載到樹上</span> <span class="token2">public</span> <span class="token2">static</span> <span class="token2">function</span> <span class="token2">set</span><span class="token1">(</span>$key<span class="token1">,</span>$obj<span class="token1">)</span><span class="token1">{</span> self<span class="token1">:</span><span class="token1">:</span>$objects<span class="token1">[</span>$key<span class="token1">]</span> <span class="token">=</span> $obj<span class="token1">;</span> <span class="token1">}</span> <span class="token6">// 從對象樹上獲取實例</span> <span class="token2">public</span> <span class="token2">static</span> <span class="token2">function</span> <span class="token2">get</span><span class="token1">(</span>$key<span class="token1">)</span><span class="token1">{</span> <span class="token2">if</span> <span class="token1">(</span><span class="token">!</span><span class="token3">isset</span><span class="token1">(</span>self<span class="token1">:</span><span class="token1">:</span>$objects<span class="token1">[</span>$key<span class="token1">]</span><span class="token1">)</span><span class="token1">)</span><span class="token1">{</span> self<span class="token1">:</span><span class="token1">:</span>$objects<span class="token1">[</span>$key<span class="token1">]</span> <span class="token">=</span> <span class="token2">new</span> $key<span class="token1">;</span> <span class="token1">}</span> <span class="token2">return</span> self<span class="token1">:</span><span class="token1">:</span>$objects<span class="token1">[</span>$key<span class="token1">]</span><span class="token1">;</span> <span class="token1">}</span> <span class="token6">// 從對象樹上刪除 注銷</span> <span class="token2">public</span> <span class="token2">static</span> <span class="token2">function</span> <span class="token3">_unset</span><span class="token1">(</span>$key<span class="token1">)</span> <span class="token1">{</span> <span class="token3">unset</span><span class="token1">(</span>self<span class="token1">:</span><span class="token1">:</span>$objects<span class="token1">[</span>$key<span class="token1">]</span><span class="token1">)</span><span class="token1">;</span> <span class="token1">}</span> <span class="token1">}</span> ``` ``` ### 在extend目錄下 創建一個A.php類文件 ``` <pre class="calibre13">``` <span class="token"><</span><span class="token">?</span>php <span class="token2">class</span> <span class="token3">A</span> <span class="token1">{</span> <span class="token2">public</span> <span class="token2">function</span> <span class="token3">register</span><span class="token1">(</span><span class="token1">)</span> <span class="token1">{</span> <span class="token2">return</span> <span class="token4">'abc'</span><span class="token1">;</span> <span class="token1">}</span> <span class="token1">}</span> ``` ``` ### 在index首頁控制器方法中 測試 ``` <pre class="calibre13">``` <span class="token"><</span><span class="token">?</span>php namespace app\index\controller<span class="token1">;</span> <span class="token2">class</span> <span class="token3">Index</span> <span class="token1">{</span> <span class="token2">public</span> <span class="token2">function</span> <span class="token3">index</span><span class="token1">(</span><span class="token1">)</span> <span class="token1">{</span> $a <span class="token">=</span> <span class="token2">new</span> <span class="token3"><span class="token1">\</span>A</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span> <span class="token6">// 把$a掛在到注冊樹上面</span> \YueRegister<span class="token1">:</span><span class="token1">:</span><span class="token2">set</span><span class="token1">(</span><span class="token4">'sinwa'</span><span class="token1">,</span>$a<span class="token1">)</span><span class="token1">;</span> <span class="token6">// 從樹上拿到并進行使用</span> $abc <span class="token">=</span> \YueRegister<span class="token1">:</span><span class="token1">:</span><span class="token2">get</span><span class="token1">(</span><span class="token4">'sinwa'</span><span class="token1">)</span><span class="token">-</span><span class="token">></span><span class="token3">register</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span> echo $abc<span class="token1">;</span> <span class="token1">}</span> <span class="token1">}</span> ``` ``` ### 以上會輸出 abc 如果把上面的 ``` <pre class="calibre13">``` $abc <span class="token">=</span> \YueRegister<span class="token1">:</span><span class="token1">:</span><span class="token2">get</span><span class="token1">(</span><span class="token4">'sinwa'</span><span class="token1">)</span><span class="token">-</span><span class="token">></span><span class="token3">register</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span> ``` ``` 改成 ``` <pre class="calibre13">``` $abc <span class="token">=</span> \YueRegister<span class="token1">:</span><span class="token1">:</span><span class="token2">get</span><span class="token1">(</span><span class="token4">'A'</span><span class="token1">)</span><span class="token">-</span><span class="token">></span><span class="token3">register</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span> ``` ``` 就會走注冊上面的 當查詢不到的時候 就執行創建 依然可以正常的輸出
                  <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>

                              哎呀哎呀视频在线观看