_此篇章與框架技術無關,為課外讀物,感興趣的可以略讀一下。_
##5.2.1 寫在前面的話
記得曾經有一位大主教在自己的墓志銘上寫道:
```
“小時候,我發誓要改變整個世界;
大些了,我努力改變我的祖國;
后來,我想我能改變我居住的這個城市;
直到臨死之前才發現,我只能改變自己,從而影響他人,乃至影響整個世界”。
```
當然,我沒有想過要去影響整個世界,我只想盡我自己的所學,為自己,為他人做一些有用的事情。
正如,最近在thephp.cc站點上面看到的這樣一張PPT:

我不一定能記住這位國際出名的前輩的名字,但我記住了他的這句話:
```
Driven by his passion to help developers build better software.
```
##5.2.2 然而,要布道,先要踐道。
所以,當我希望把PhalApi框架開源出去時,我這個框架應該是初步完善并可以應用于實際項目開發的,至少我已經切身用過它來進行后臺接口項目開發并不斷優化重構之。
##5.2.3 最初框架源于畢業論文的需要
當年,在進行畢業論文的項目開發時,因為需要用到后臺接口。于是乎,便到圖書館和網上查閱整理了很多資料,知識理論包括RESTFull、phprpc、SOAP協議、Aamzon接口服務、WSDL、Web Service等等。
然而,在實際中我卻發現很多人在用PHP開發接口是很簡單的,或者說是很粗爆的,如直接使用fopen()函數進行獲取接口結果。并且,當我需要去尋找一個可以進行后臺接口開發的框架時,居然沒找到很好框架支持。基于此,最初的接口框架就在這樣的背景和研究下出來了。
附一下當前畢業論文的相關資料:
+ PhalApi前世: 畢業論文答辯匯報 - 精簡版.ppt
+ PhalApiu前世:畢業論文 - 暗夜在火星 - 修改版.pdf
+ PhalApi前世文檔:zenWS3完全開發手冊 - 初稿 - 20130317.pdf
可以在 [附件](http://git.oschina.net/dogstar/PhalApi/attach_files) 下載上面的資料。
##5.2.4 最初框架的首次商用和實站
在畢業后就職的第一家公司中,由于也有接口開發的需要,正好是管理后臺 內部系統調用,所以在征得領導同意后,我將我畢業論文所研發的接口框架進行了部署和開發。首次投入了商業用途。```^_^```
并同時整理出了初步的接口框架,也就是PhalApi的前世。
##5.2.5 PhalApi的前世
最初的框架命名是:zenphpWS3。
原因是zen表示開源、php表示用PHP開發、WS表示Web Service、3表示支持SOAP/HTTP/RPC三種協議以及JSON/XML/ARRAY等多種格式的返回。
更多可以訪問我之前的博客: [zenphpWS3:文檔&示例&設計&源碼](http://my.oschina.net/u/256338/blog/285184)
##5.2.6 又一年的全職接口開發和開源框架學習
曾經有一年,我負責某個大型游戲項目的后臺接口開發,同時提供接口供安卓版、iOS版和PC使用,對后臺接口的開發有了更多的實戰經驗。
并且,在對很多國外優秀的開源框架的學習和研究后,有了很多的領會,如我個人最為推薦的Phalcon。Phalcon不僅僅在框架方面做得非常優秀,在文檔編寫方面也是不遺余力的,即使我們不用這個框架,也能從這個框架的文檔上吸引很多有用的思想。
才發現最初提供的接口框架還有很多不成熟的地方。。。
##5.2.7 PhalApi框架開源的前奏
到后來,在越來越多項目開發的需要下,出于仍然沒有很好的接口框架支持(這里補充說明一下:一搜索“php接口開發框架”沒有好的結果;二所接觸到的框架雖然有支持接口開發,但只是其中一部分)。更為重要的是,項目往往又是如此重要,很擔憂所選的框架進行接口開發后遇到問題不知如果在底層修正。
所以,還是用回了自己的接口開發框架。
當然,在做項目接口開發的同時,我也有意識地在對接口框架進行完善和重構,并融入框架所需要的特性、原則和模式。如可重用、IoC、5條設計原則、組件等。
至此,PhalApi接口框架也就慢慢地明朗了。接下來就是:
##5.2.8 PhalApi正式走向開源
如今,很多大的企業都提供了開放平臺,如騰訊開放平臺、新浪微博開放平臺、優酷開放平臺等。與此相比,雖然小應用輕量級App項目的后臺接口沒有這么大的規模,但也是很有量級上的需求的,正如下面這張圖所展示的。

在此大背景下,顯然會有更多的應用需要后臺接口的支撐,需要進行后臺接口的開發,乃至對海量數據和訪問的支持、快速擴容升級、一鍵發布、多端支持等。即使這樣,PHP開發人員在接口開發時,仍然會顯得有點“隨心所欲”,缺少規范和統一,更為重要的是仍然沒有發現好的PHP接口開發框架。
```
古云此日足可惜,吾輩更應惜秒陰。
```
所以,此框架通過我多個實際項目應用后,在不斷整理重構、精益迭代下走向了開源。```^_^```
希望對你們有所幫助,謝謝。
我們通過這個框架,希望可以(正如文檔里面所說的):
```
一來,支撐輕量級項目后臺接口的快速開發;
二來,闡明如何進行接口開發、設計和維護,以很好支持海量訪問、大數據、向前向后兼容等;
三來,順便分享一些好的思想、技巧和有用的工具、最佳實踐。
```
其中,第一點是直接的也是最表面的,即你通過這個接口框架就可以快速開發了;第二點是更通用的接口開發中的一些好的或者必要的技術支撐和策略;第三點是面向框架級別的,即使你不用這個接口框架,也可以設計研發自己的開發框架,同時也是突破接口開發、超越PHP語言的。
書不盡言,歡迎多交流,再次謝謝!
- 歡迎使用PhalApi!
- 接口,從簡單開始!
- [1.1]-下載與安裝
- [1.2]-創建一個自己的項目
- [1.3]-在線體驗
- [1.4]-文檔、幫助和官網
- [1.10]-對PhalApi框架的抉擇
- [1.11]-快速入門(backup)
- [1.12]-參數規則:接口參數規則配置
- [1.13]-統一的接口請求方式:_sevice=XXX.XXX
- [1.14]-統一的返回格式和結構:ret-data-msg
- [1.15]-數據庫操作:基于NotORM的使用及優化
- [1.16]-配置讀取:內外網環境配置的完美切換
- [1.17]-日記紀錄:簡化版的日記接口
- [1.18]-快速函數:人性化的關懷
- [1.19]-DI服務速查:各資源服務一覽表
- [1.20]-DB操作:數據庫基本操作速查
- [1.21]-類的自動加載:遵循PEAR包的命名規范
- [1.22]-簽名驗證:自定義簽名規則
- [1.23]-請求和響應:GET和POST兩者皆可得及超越JSON格式返回
- [1.24]-緩存策略:更靈活地可配置化的多級緩存
- [1.25]-國際化翻譯:為走向國際化提前做好翻譯準備
- [1.26]-數據安全:數據對稱加密方案
- [1.27]-精益開發:更富表現力的Model層和重量級數據獲取的應對方案
- [1.28]-COOKIE:對COOKIE原生態的支持及記憶加密升級版
- [1.29]-開放與封閉:多入口和統一初始化
- [1.30]-保持的力量:接口開發最佳實踐
- [1.31]-新型計劃任務:以接口形式實現的計劃任務
- [2.11]-核心思想:DI依賴注入-讓資源更可控
- [2.12]-海量數據:可配置的分庫分表
- [2.13]-接口調試:在線SQL語句查看與性能優化
- [2.14]-測試驅動開發:意圖導向編程下的接口開發
- [2.15]-演進:新型計劃任務續篇
- [2.16]-領域驅動設計:應對復雜領域業務的Domain層
- [2.17]-微服務:Api接口服務層
- [2.18]-定制化:資源服務的再實現
- [2.19]-擴展庫:可重用的擴展類庫
- [2.20]-約定編程:架構明顯的編程風格
- [2.21]-服務器統一部署方案簡明版:CentOs---Nginx---php-fpm---MySql-[--Memcached]
- [2.22]-更多工具:精益項目和團隊建設
- [3.1]-擴展類庫:微信開發
- [3.2]-擴展類庫:代理模式下phprpc協議的輕松支持
- [3.3]-擴展類庫:基于PHPMailer的郵件發送
- [3.4]-擴展類庫:優酷開放平臺接口調用
- [3.5]-擴展類庫:七牛云存儲接口調用
- [3.6]-擴展類庫:新型計劃任務
- [3.8]-擴展類庫:用戶、會話和第三方登錄集成
- [3.9]-擴展類庫:swoole支持下的長鏈接和異步任務實現
- [3.11]-擴展類庫:基于FastRoute的快速路由
- [4.2]-開發實戰2:模擬優酷開放平臺接口項目開發
- [4.3]-開發實戰3:一個簡單的小型項目開發(奔跑吧兄弟投票活動)
- [5.1]-架構與思想:PhalApi核心設計和思想解讀
- [5.2]-雜談:扯一些PhalApi的前世和今生
- [5.3]-框架總結:術語表和PHP開發建議
- [5.4]-許可
- [5.5]-聯系和加入我們
- [5.6]-更新日記
- [5.8]-致框架貢獻者:加入PhalApi開源指南
- [6.1]-基于接口查詢語言的SDK包
- [6.2]-SDK包(JAVA版)
- [6.3]-SDK包(PHP版)
- [6.4]-SDK包(Objective-C版)
- [6.5]-SDK包(javascript版)
- [6.6]-SDK包(Ruby版)
- [8.1]-PhalApi視頻教程
- 附錄1:接口文檔參考模板