[一己之见]如何挑选PHP框架?

如何挑选PHP框架?

这个问题是我面试的经常使用起手问题,因此在SF看到这个提问的时候,就抽时间回答了一下。这里作一些整理和补充。php

不少时候,讨论问题从抠概念出发是个好想法。框架是团队项目初期选定的开发框架,或者在长期开发过程当中提炼的公共逻辑等。因此不管是初期挑选框架、是中途重构更换框架、仍是须要抽离团队内部本身的框架,都应当如下面三个角度综合考虑git

  • 团队github

  • 项目web

  • 框架自己面试

团队成员状况 & 将来团队成员状况 & 所在地职业市场状况

若是团队如今和将来都只有你一我的(好比本身的toy project),那选本身最想用的就好。但只要不是这个状况,你最好先得了解市面上常见的各类框架,而后忘记本身的我的偏好。express

<!--more-->npm

了解你的团队成员的如今状况,考虑你的团队将来的发展速度,将来可能加入的团队成员的状况,以及你所在地职业市场状况。打比方说,Laravel常常是个不错的选择,但若是你在产业不发达的小城市,团队又必须高速发展大量招人,选择Laravel可能很快会让你陷进“composer和现代PHP技能培训班”的窘境,而一些更“接地气”的框架则能让你的团队迅速扩张,快速知足业务发展的需求segmentfault

项目生命周期 & 将来演变方向

有的项目,做为贵司的主营业务是须要长期维护,持续迭代的。而另外一些项目可能做为一些边角、过渡的项目,可能作完之后不会再有什么后续的需求。最后还有一些外包/类外包的项目,交付之后就没有需求/后续需求能够当另外一个项目。安全

再大的项目,需求再多,若是是第三种,无需考虑将来演变的,那么框架的扩展性就可以被牺牲(从而换取开发速度或其余好处),打比方说基于一些成品二次开发的选择就能够被考虑。再小的项目,若是是贵司的主营业务,持续迭代的,那么就算工做量再小,也必须慎重考虑框架的扩展性。架构

那么,什么是框架的扩展性呢? CI是扩展性很好的框架吗?ZendFramework1/2是扩展性很好的框架吗?

答案是,看将来演变方向。有的项目将来的压力在访问流量大,有的压力在数据量大检索频繁,也有项目压力在需求迭代快,变更频繁而周期短。项目面临的问题越是广泛,那么预设各类解决方案的框架可能越能减小重复造轮子,反之项目面临的问题越是极端,那么轻量化的那些框架可能更适合让你的团队本身研究解决方案对接到框架中。另外,项目维护的时间越长,变更越难预测,采用预设各类解决方案的框架的风险就会越大(那些预设的解决方案刚好能解决你的每一个问题的几率愈来愈小)

框架自己的基本素质

性能和跑分。除了phalcon和Yaf两个C实现的框架,其余框架请认为同样快。另外除非你在主持相似新浪微博更换PHP框架这样的事,或者说除非你管理的项目web机器超过100台,请忽略PHP框架的性能因素

psr和composer亲和性。这是双刃剑,前面已经聊过怎么看待这个特质了。

安全性。某些框架甚至自己本身有安全漏洞很少说。另外若是框架层面提供了一些安全方面的东西,建议仍是要简单看一遍代码,有时那可能反而不如本身写。

功能性。也就是预设的解决方案的数量和质量,前面有提过。

模块化程度。框架内的各个部分是否可以自定义,自定义的代价多高。另外一个角度是框架的各个部分是否能脱离框架运行。

表达能力(业务功能须要多少代码量来实现),这三个特性(表达能力、功能性、模块化程度)互相冲突,没法达到三者兼得。功能丰富,模块化程度又高能够随意定制、替换的框架,每每普通的业务代码也要写一堆。一句话能写出一大堆功能的框架,每每模块化程度不理想,不容易自定义。 模块化程度高,而业务代码不啰嗦的框架,则每每没有丰富的预设功能。

周边生态和活跃程度以及兼容性。活跃的框架就还有成长和改进的空间,但相应过于活跃有时会致使应用没法兼容。另外一个指标是周边的生态,有没有其余人基于这个框架开发一些周边的模块/插件之类的东西,以及文档的丰富程度、出问题后能是否容易找到的解决方案等。

“无招胜有招”

-- 谈composer和psr-7和我心目中将来十年的PHP框架

(本节内容仅仅是我我的的判断,另外基于中国国情,这个将来可能也仍是老外先享受到)

PHP是个相对古老的语言,PHP框架也是个至关古老的概念了。我认为隔壁的NodeJS社区很好的为咱们示范了真正“web框架”应有的形态。以依赖解决方案npm为核心,connectexpress为表明的中间件架构为骨架,周围围绕着星罗密布的数不胜数的中间件。中间件架构设定了web请求和响应的标准接口,周围的其余项目以这些接口为基础开发各类功能。工程师要作的就是找到合适的中间件安插到项目中,或者本身写合适本身状况的中间件(固然最好是开源出来回报社区咯)。因而你会发现至关于“PHP框架”概念的那些项目基本行不通(sails已是作的最好的了?)

这也是我对将来PHP框架的判断。大而全的“PHP框架”时代已通过去了。不用composer的,或者伪装本身用composer的那些框架没有将来。基于composer的,模块化组件化的项目,将来在强势的输入输出标准统一下,会爆发出惊人的生产力。symfony/http-foundation原本是个不错的选择,社区也有对应的中间件化的努力。但目前看来,怀胎已久的PSR-7更可能成为将来的赢家。有强力的标准和解构化的中间件生态,社区才有充分的竞争,开发者才有充分的选择权,A2框架 视图层巨烂但路由很漂亮,B2框架 路由好用但视图糟糕?下一代A3和B3都同样支持PSR-7,拿回家本身拼接就好!

广告时间: 基于这样的判断,connect的PHP移植又没有不少star的状况下,我花了一些时间撸了本身的中间件架构mcfog/nimo,欢迎围观和star

原文地址:http://inside.mcfog.wang/2015/09/ichizon-d/

相关文章
相关标签/搜索