#phalapi-入門篇6(小技巧和淺談API適用范圍以及入門篇總結)#

##前言##
***先在這里感謝phalapi框架創始人@dogstar,為我們提供了這樣一個優秀的開源框架.***
本篇文章的目的在于把框架自帶的一些好用,封裝好的一些方便開發的類庫簡單的說一下,靈活使用可以提高開發效率,再就是因為在交流過程中有很多童鞋提出了一些關于什么樣的項目怎么用API和web端怎么使用API這類的問題,我就我的理解把我的一些想法和大家交流一下,最后是對于入門篇做一下總結,以及對后面的一些教程做一下說明.
附上:
喵了個咪的博客:[w-blog.cn](w-blog.cn)
官網地址:[http://www.phalapi.net/](http://www.phalapi.net/ "PhalApi官網")
開源中國Git地址:[http://git.oschina.net/dogstar/PhalApi/tree/release](http://git.oschina.net/dogstar/PhalApi/tree/release "開源中國Git地址")
##1. 小技巧##
在這里介紹的是一些比較基礎是比如**curl,log,和tools**著一些基礎的,關于**cache,Cookie**等一些會在后面進階篇慢慢道來
###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 歡迎大家的加入!**
####[上一章](/wikis/%5b7.5%5d-phalapi-%e5%85%a5%e9%97%a8%e7%af%875(%e6%95%b0%e6%8d%ae%e5%ba%93%e6%93%8d%e4%bd%9c%e5%92%8cModel%e5%b1%82).html) [文檔首頁](/wikis/) [下一章](/wikis/%5b7.7%5d-phalapi-%e8%bf%9b%e9%98%b6%e7%af%871(%e4%b8%89%e5%b1%82%e7%bb%93%e6%9e%84Api%2cDomain%2c%e5%92%8cModel).html)
- 空白目錄
- [7.1]-phalapi-入門篇1(簡單介紹以及環境搭建)
- [7.2]-phalapi-入門篇2(把它玩起來)
- [7.3]-phalapi-入門篇3(請求和返回)
- [7.4]-phalapi-入門篇4(國際化高可用和自動生成文檔)
- [7.5]-phalapi-入門篇5(數據庫操作和Model層)
- [7.6]-phalapi-入門篇6(小技巧和淺談API適用范圍以及入門篇總結)
- [7.7]-phalapi-進階篇1(三層結構Api,Domain,和Model)
- [7.8]-phalapi-進階篇2(DI依賴注入和單例模式)
- [7.9]-phalapi-進階篇3(自動加載和攔截器)
- [7.10]-phalapi-進階篇4(notorm進階以及事務操作)
- [7.11]-phalapi-進階篇5(數據庫讀寫分離)
- [7.12]-phalapi-進階篇6(解決大量數據存儲數據庫分表分庫拓展)
- [7.13]-phalapi-進階篇7(使用緩存以及用redis拓展解決實際問題)
- [7.14]-phalapi-進階篇8(PhalApi能帶來什么和進階篇總結)