#phalapi-入門篇6(小技巧和淺談API適用範圍以及入門篇總結)#php
##前言## 先在這裏感謝phalapi框架創始人@dogstar,爲咱們提供了這樣一個優秀的開源框架.html
本篇文章的目的在於把框架自帶的一些好用,封裝好的一些方便開發的類庫簡單的說一下,靈活使用能夠提升開發效率,再就是由於在交流過程當中有不少童鞋提出了一些關於什麼樣的項目怎麼用API和web端怎麼使用API這類的問題,我就個人理解把個人一些想法和你們交流一下,最後是對於入門篇作一下總結,以及對後面的一些教程作一下說明.前端
附上:node
官網地址:http://www.phalapi.net/git
開源中國Git地址:http://git.oschina.net/dogstar/PhalApi/tree/releaseweb
##1. 小技巧##後端
在這裏介紹的是一些比較基礎是好比curl,log,和tools着一些基礎的,關於cache,Cookie等一些會在後面進階篇慢慢道來api
###1.1 curl請求類###安全
其實在框架內部已經提供了Curl的請求類位置是在**/Phalpi/Phalapi/CUrl.php**併發
// 構造方法接受參數爲失敗重試次數默認是1能夠本身指定 $curl = new PhalApi_CUrl(2); // 進行GET 返回請求結果 $rs = $curl->get('http://phalapi.oschina.mopaas.com/Public/demo/?service=Default.Index'); // 進行POST 返回請求結果 $data = array('username' => 'dogstar'); $rs = $curl->post('http://phalapi.oschina.mopaas.com/Public/demo/?service=Default.Index', $data);
###1.2 log日誌類###
在大部分時候都沒辦法實時知道報錯信息,可是若是發生了錯誤咱們須要記錄起來,來提供給本身往後分析,或者是在運營環境中有個問題可是本身不是很肯定能夠經過debug日誌的形式寫入文件進行分析,框架有提供這方面的功能,在接口init.php中已經有下面這段話了
//日記紀錄 DI()->logger = new PhalApi_Logger_File(API_ROOT . '/Runtime', PhalApi_Logger::LOG_LEVEL_DEBUG | PhalApi_Logger::LOG_LEVEL_INFO | PhalApi_Logger::LOG_LEVEL_ERROR);
這樣就已經註冊了日誌類**API_ROOT . '/Runtime'**這個是表示日誌存放的路徑(必定要保證有寫入權限才能正常使用)使用以下
//error 系統異常類 DI()->logger->error('fail to insert DB', $data); //對應的LOG 2015-02-07 20:37:55|ERROR|fail to insert DB|{"name":"dogstar","password":"123456"} //info 業務紀錄類 DI()->logger->info('add user exp', array('name' => 'dogstar', 'before' => 10, 'addExp' => 2, 'after' => 12, 'reason' => 'help one more phper')); //對應的LOG 2015-02-07 20:48:51|INFO|add user exp|{"name":"dogstar","before":10,"addExp":2,"after":12,"reason":"help one more phper"} //debug 開發調試類 DI()->logger->debug('just for test', array('name' => 'dogstar', 'password' => '******')); //對應的LOG 2015-02-07 20:37:55|DUBUG|just for test|{"name":"dogstar","password":"******"}
文件存放的文件路徑通常爲Runtime/log/201502(年月)/20150207(年月日).log
###1.3 tool工具類###
工具類的路徑在**/Phalpai/Phalapi/Tool.php**中目前裏面提供了兩個工具(IP地址獲取,隨機字符串生成)使用方法入下,本身會常用的工具均可以放進去
//實例化工具類 $PhalApi_Tool = new PhalApi_Tool(); //生成一個"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"組成的一個隨機字符串根據輸入的值決定長度 $PhalApi_Tool->createRandStr(5); //獲取請求的IP這裏的IP是外網IP $PhalApi_Tool->getClientIp();
##2. 淺談API適用範圍##
其實想談談這個的緣由是應爲有人有疑問,Api適用範圍是否是隻侷限於APP,還有就是若是是用 phalapi 提供一個後臺管理的web項目的話要怎麼去作,在這裏根據一些筆者本人的一些膚淺的瞭解談一談個人認爲,分一下幾個場景進行說明.
###2.1 移動端###
我認爲排在第一位的應該是移動應用好比Android和IOS上面的應用通信確定是須要使用到API通信的(基本上是首選,不多有看到其餘非接口形式的).
###2.1 提供服務(主要是平臺類)###
提供服務(主要是平臺類)好比銀行來講,提供的支付接口,付款接口等,還有就是一些外賣平臺,團購平臺都有本身的一套接入API接受數據(這一些可能會偏向高端一點)
###2.1 長週期web項目###
長週期web項目,爲何要叫作長週期web項目,由於短時間的項目好比5天的一個抽獎活動我是以爲實在沒有必要去作成接口通信的形式,這種短週期的項目直接拿着靜態頁面加上MVC框架去實現來的是划算一點(由於API和web通信成本仍是比較大的),對於長週期的項目來講使用API是有好處的以下:
1.先後端分離,後端提供API服務,前端進行請求展現,讓前端專一作前端的事情,讓後端專一作後端的事情.
2.升級迭代能夠有效的減少維護成本,當迭代升級的時候,若是是後端沒有變更,只是前端進行變更了能夠很好的分開工做量.(前端同樣)
3.分離以後規範更加清晰,API有API的一套完整的開發規範,前端也同樣,就不會和MVC框架同樣代碼堆積在一個地方
4.高併發web項目優化目標準確,優化空間大,對於API來講就是能夠單點優化.
當前也有他的缺點,前期工做量會有所增長,溝通成本增長,可是我認爲他帶來的好處是持續的
還有一個重點就是怎麼實現通信,我如今在項目中前端是使用js進行請求通信的,這是比較經常使用的,還有一種設想PHP提供接口,而後node.js或者其餘語言進行請求而後渲染出html代碼給到前端進行展現,這樣能夠解決安全問題,並且node.js不須要進行數據操做性能也是很是好的.
##3. 入門篇總結##
通過了一個月交流入門篇也就在這裏結束了,在入門篇裏面吧一些關於Phalapi的基本使用方式都過了一遍,我也但願你們能動手都操做一遍,當如入門篇講的是比較基礎的東西,經驗老到的童鞋過一過就好了,在後面的進階篇裏面跟過的會講到概念和思想性的東西,好比DI思想單例模式,三層的好處等,而在實戰篇中會着重講解如何運用到實際開發中,怎麼多項目共用框架等一些比較實際的一些教程,也但願你們可以進一步關注,再一次感謝喜歡Phalapi框架的大家,大家的關注就是個人動力!
注:筆者能力有限有說的不對的地方但願你們可以指出,也但願多多交流!
官網QQ交流羣:421032344 歡迎你們的加入!