如何编写自己的PHP框架

使用PHP有段时间了,好吧,只是使用而已。

没做过大型项目,只做过简单的模块开发,见识过 Yii ThinkPHP CI 等开源框架。
但是,只停留在知其然的状态,很想自己弄个框架,由小见大一点一点的做一个东西出来,不知道从哪里入手。

求大神指点迷津。

阅读 29.9k
14 个回答

这个问题本来我不想回答的。但是思考了一段时间后,还是要吐槽下。

首先你要明白你为啥自己开发框架?

我想你自己都没有想的特别明白吧。是为了写个框架,觉得很酷,很厉害,还是仅仅为了顺手,

符合自己的习惯。

楼主自己还是处于初手阶段,对几种不错的框架原理都没搞清楚,就开始写框架。我觉得不是很脚踏实

地。当你了解到现在框架的优劣,原理,觉得不是很便利,或者觉得不是很符合自己的理念,习惯等。

你才去开发。那样你才有实力,才有深刻得理解。

本人当时也是做了很多项目,也用了很多框架,觉得框架不是很符合自己的思想理念。才试着写符合自

己思想的框架。

上面纯属个人理解。言辞不好地方,请多多指教。

先吐一句:框架和其他程序一样,是用来解决问题的。如果你没有遇到问题,为什么要重新制造轮子?

然后说点正经的:

大部分的Web框架处理以下事情:

  • 代码重用:定义包、类、函数的放置和加载规则,建议直接整合Composer及其AutoLoad特性。
  • 请求的分发管理:这个就是路由,Rest风的框架喜欢Rewrite,简单的一点的框架主要通过参数来定位模块和方法所在。
  • 配置文件管理:加载和动态加载配置数据
  • 错误和异常管理:异常捕捉、错误日志记录以及错误码规范。
  • LayOut和模板引擎:如何规划页面布局、widget如何重用、ajax页面如何结合、过期session如何重定向;数据和模板怎么渲染成HTML,是否压缩和设置过期头。
  • 数据库:如何融入控制器;支持什么样的driver;考虑主从分离的扩展性;以及是否使用ORM。

核心框架大体就是这些东西吧。外围就是其他常用组件了,设计好即插即用机制就好。

大型框架实现比较繁杂,可以找一些简单的框架入手,再慢慢的体会大型框架的优点。

顺便贴一个我写的框架:https://github.com/easychen/lazyphp/tree/3.1

一般框架 单一入口->路由->分发->渲染,加一些扩展性,给路由,分发和渲染加上接口或者抽象类,再方便点加上composer,再好维护点加模块,然后改BUG。。
吐槽:一般正式项目用较成熟的开源框架比较好,我已领教自主开发框架对程序员的迫害T_T,优秀自主框架除外。

一般性质的PHP框架最基础部分要包含URL路由与请求分发、数据库连接和操作、模板引擎、常见字符串数组操作、自动加载等功能和模块,可以参考一些实现的不那么晦涩难懂的框架学习,一步步的实现,但是优质的框架并不是类库和功能的封装,还要有机的合理的将上述的功能模块结合在一起才能发挥巨大作用。

找一個框架照著寫一遍
然後你不用再問這個問題了

如果你的目的是“做个东西”,那么最合理/常见的应该是写个博客程序

  • 没有业务空写框架是需要大量经验做基础(知道各种不同项目的异同点,开发的痛点),而博客程序是实实在在的业务
  • 博客业务的弹性十足,可以从非常小开始几乎无限做大做复杂。而且可以涉及一个web的几乎所有方面。
  • 博客自用自己部署上线,至少有1个管理用户(自己)和若干游客。而写框架的话,还是绕不过“项目没人用”的尴尬

广告时间 - 我的PHP框架 LitPHP

虽然0.2版本长了10几行,但289行的代码行数应该还是全球最小的PHP框架

http://litphp.github.io/

粗看看代码半小时,仔细看也就半天最多,应该能给写框架提供一些思路。

php 社区已经非常成熟,各种模式和风格的框架都已经有实现了,私以为,你再去开发一个PHP框架,纯粹是为了重复造轮子的乐趣和成就感。当然,如果有足够的时间和经历,可以尝试去开发一个符合自己习惯的框架,一方面理解框架设计,一方面锻炼自己的能力。不过,这一切都是在你用过,至少了解过很多不同风格的框架之后

但是,其它的新兴的技术,例如Node.js,还很年轻,各种包和框架都不十分成熟,还有很多待填补的空白,无限的可能性,这时候去开发一个框架,才有社区贡献的意义。

发一个我的Node.js框架吧:Codekart官网文档手册

我不赞同,如果是我刚开始以前,肯定也会有这样的想法。但是现在我会选择用主流开源的框架。
自己写框架,当然可以运行,但没有经历过时间的考验,终究是需要不断的重构!

你终究赶不上php的进化,php升级、框架升级会让你抓狂

web的mvc框架太多了,推荐楼主转向一些冷门的框架,例如 socket服务器框架,异步框架,移动应用框架等

“使用PHP有段时间了,好吧,只是使用而已”。使用的时间估计还是有点短,接触PHP三年以内建议先熟悉一些常用的PHP框架,CI,YII,thinkphp,Laravel,symfony等等,等火候到了再考虑写自己的框架吧。其实用现有框架也好,自己开发框架也好各有道理。前提是你在开发框架前已经了解了其他一些框架的优势和劣势,这样才能开发出更好的框架。如果只是想用框架快速开发产品,建议使用现有框架。

自己开发框架主要的好处是能够让你学习框架怎么写。如果想问如何编写的话,我建议还是从定制某一款框架开始,改成自己需要的或者想要的,学习其中主要的实现流程以及用到了语言的哪些特性。不断的定制修改之后直到最后你把他的核心部分代码也改掉就成了你想要的了。

当然这个过程中也有很多可以思考和借鉴的东西,比如如何支持多线程、多进程、异步日志之类的,如何针对cli模式做优化

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏