<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 功能強大 支持多語言、二開方便! 廣告
                ##3.2.1 擴展類庫:代理模式下phprpc協議的輕松支持 我們一直都建議在我們的項目中使用設計模式以便讓代碼更優雅,但我們更推薦只在合適的場景才使用合適的設計模式,而不是為了“顯學”而生硬套用。設計模式又需要更高層的設計原則和工程思想作指導,才能更正確被使用發揮其作用。 在PhalApi,正如前面所說的,我們引入并應用了很多設計原則,一如單一職責原則SPR、開放-封閉原則OCP等。因此,在這里我們可以在phprpc的基礎上,利用代理模式優雅地擴展實現phpcpr協議。 在需要使用phprpc協議進行接口調用的項目中,我們可以快速利用此擴展類庫。并且你會發現,服務端的接口已有的代碼不需要做任何改動,只需要增加此擴展包和添加一個新入口便可完美切換。特別在項目中途BOSS說我們要提高接口調用的安全性而改用phprpc協議時。 ##3.2.2 安裝 ###(1)擴展包下載 從 [PhalApi-Library](http://git.oschina.net/dogstar/PhalApi-Library) 擴展庫中下載獲取 **PHPRPC** 微信包,如使用: ```javascript git clone https://git.oschina.net/dogstar/PhalApi-Library.git ``` 然后把 **PHPRPC** 目錄復制到 **./PhalApi/Library/** 下,即: ```javascript cp ./PhalApi-Library/PHPRPC/ ./PhalApi/Library/ -R ``` 到此安裝完畢! ##3.2.3 入門使用 ###(1)phprpc協議入口 可以參考下面的入口代碼編寫: ```javascript //$ vim ./Public/phprpc/index.php <?php require_once dirname(__FILE__) . '/../init.php'; //裝載你的接口 DI()->loader->addDirs(array('Demo', 'Library')); $server = new PHPRPC_Lite(); $server->response(); ``` ##3.2.4 示例 這里以?service=User.GetBaseInfo為例進行說明。 ###(1)瀏覽器訪問失敗 在使用了phprpc協議后,我們再以瀏覽器(HTTP協議)訪問調用接口時,會預期地出現以下失敗信息: ![0214](http://webtools.qiniudn.com/20150411005257_3ee80900ce60ca4b1ab5facd5bc4450c) ###(2)通過phprpc協議調用 如果通過phprpc協議調用,我們則可以得到接口返回的 **源數據** 。 假設請求的接口為:?service=User.GetBaseInfo&user_id=1,則可以得到我們熟悉的: ```javascript array ( 'ret' => 200, 'data' => array ( 'code' => 0, 'msg' => '', 'info' => array ( 'id' => '1', 'name' => 'dogstar', 'note' => 'oschina', ), ), 'msg' => '', ) ``` ##3.2.5 phprpc協議調試 同樣,為了方便進行phprpc協議下接口調用的調試,我們提供了一個腳本,如上面的對?service=User.GetBaseInfo&user_id=1調用,使用腳本即為: ```javascript $ php ./Library/PHPRPC/check.php http://dev.phprpc.com/phprpc/?service=User.GetBaseInfo&userId=1 array(3) { ["ret"]=> int(200) ["data"]=> array(3) { ["code"]=> int(0) ["msg"]=> string(0) "" ["info"]=> array(3) { ["id"]=> string(1) "1" ["name"]=> string(7) "dogstar" ["note"]=> string(7) "oschina" } } ["msg"]=> string(0) "" } ``` ##3.2.6 對客戶端的調整 雖然服務端不需要作出太多的改動,但對于客戶端來說,仍然需要進行三方面的調整以進行phprpc協議的調用以及參數的傳遞和返回結果的獲取。 現分說如下。 ###(1)調用方式的改變 首當其沖的就是調用方式的改變,但值得開心的是,phprpc對很多語言都有支持。具體可以查看phprpc官網。 ###(2)POST參數傳遞方式的改變 其實對POST參數傳遞的改變。考慮到phprpc協議中對POST的數據有一定的復雜性,這里統一作了簡化。 正如我們下面的代碼所示: ```javascript public function response($params = NULL) { $paramsArr = json_decode($params, TRUE); if ($paramsArr !== FALSE) { DI()->request = new PhalApi_Request(array_merge($_GET, $paramsArr)); } ``` 我們約定: **通過第一個參數用JSON格式來傳遞全部原來需要POST的數據** 。 當POST的數據和GET的數據沖突時,以POST為準。 所以,相應地,當需要傳遞POST參數時,客戶需要這樣調整(如PHP下): ```javascript $client->response(json_encode($params))) ``` 如無此POST參數,則可以忽略不傳。 ###(3)返回結果格式的改變 最后,就是返回結果格式的改變。 在phprpc協議下,因為可以更輕松地獲取接口返回的源數據,所以這里也同樣不再通過字符串流式的序列返回(如原來的JSON或XML),而是直接返回接口的 **源數據** 。如上面示例中所看到的結果一樣。 這點,需要特別注意。 ##3.2.7 參考 phprpc官網:http://www.phprpc.org/zh_CN/
                  <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>

                              哎呀哎呀视频在线观看