_此篇章与框架技术无关,为课外读物,感兴趣的可以略读一下。_
##5.2.1 写在前面的话
记得曾经有一位大主教在自己的墓志铭上写道:
```
“小时候,我发誓要改变整个世界;
大些了,我努力改变我的祖国;
后来,我想我能改变我居住的这个城市;
直到临死之前才发现,我只能改变自己,从而影响他人,乃至影响整个世界”。
```
当然,我没有想过要去影响整个世界,我只想尽我自己的所学,为自己,为他人做一些有用的事情。
正如,最近在thephp.cc站点上面看到的这样一张PPT:
![-1](http://webtools.qiniudn.com/20150411005257_30831e386e6cd1c171ba4486c1b5166f)
我不一定能记住这位国际出名的前辈的名字,但我记住了他的这句话:
```
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项目的后台接口没有这么大的规模,但也是很有量级上的需求的,正如下面这张图所展示的。
![222](http://webtools.qiniudn.com/20150411005257_4df8d1c65122c2e46bf09bce0bb5b2b5)
在此大背景下,显然会有更多的应用需要后台接口的支撑,需要进行后台接口的开发,乃至对海量数据和访问的支持、快速扩容升级、一键发布、多端支持等。即使这样,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:接口文档参考模板