Home  >  Article  >  php教程  >  ColaPHP2.0的一些想法

ColaPHP2.0的一些想法

WBOY
WBOYOriginal
2016-06-06 20:07:491131browse

ColaPHP第一个版本0.1alpha是2009年7月发布的,到最新的版本1.3ga,三年多的时间,13个版本的发布,1.x系列差不多就这样了,基本上不会有大的设计改变,后续如果发版本应该也只是bugfix之类。 很久以前就在设想ColaPHP2.0做些什么,也曾经透露2.0只会支持PHP

ColaPHP第一个版本0.1alpha是2009年7月发布的,到最新的版本1.3ga,三年多的时间,13个版本的发布,1.x系列差不多就这样了,基本上不会有大的设计改变,后续如果发版本应该也只是bugfix之类。

很久以前就在设想ColaPHP2.0做些什么,也曾经透露2.0只会支持PHP5.4+,好吧,我失言了,至少目前我看不出有什么东西是ColaPHP2.0一定要做,而PHP5.2+实现不了,所以ColaPHP2.0还是支持PHP5.2+,当然PHP5.4会支持的最好,因为我最近的开发都在PHP5.4上。

计划中ColaPHP2.0不会这么早启动,收听我微博(@fuchaoqun)的人会发现我最近一年对PHP这种多进程(或者多进程+多线程)同步阻塞的请求模型抱怨甚多,至少在我们的项目上,nginx+php-fpm 502的错误就像冤魂一样挥之不去,最近也在研究一些其他的并发模型,比如ngx+lua这样的搭配,简单的业务应用非常高效(我们某个实际线上应用最佳RPS可以到8w+),但是配套的开发不是特别方便,适合简单高并发的应用;nodejs生态要成熟许多,国内国外不断有成熟的案例,是一个值得关注的方向;python里面的tornado我也非常喜欢,不过tornado的生态更恶劣,很多资源的请求都没有异步扩展包,有的也大多开发不活跃。相比较来说,web开发这块,PHP的生态最好,这些机缘加速了ColaPHP2.0的开发启动。

回过头来看ColaPHP的这13个版本,有一些设计现在觉得还不错:

  1. 简单:代码简单、流程简单、结构简单,最早的设计的初衷是不用文档也能开发,应该来说基本实现
  2. 微内核+扩展:基本上来说,所有的模块都可以定制,这点非常重要,随便定制一下就能适应各种不同开发需求
  3. 仅需要为用到的特性买单:从不强迫消费
  4. 性能:http://t.cn/SbXXpO
  5. 约束大于配置
  6. 没有改变原有的编码方式

当然,也有一些设计非常不好的地方:

  1. 过份借鉴:ColaPHP在在设计之初,参考了大量的其他框架,包括但不限于Zend Framework/CakePHP/Codeigniter/django/thinkphp/qeephp,每个框架都有自己闪光设计,抄到了一些好的,也抄了一些不好的,从Zend Framework里面吸收精华最多,糟粕也最多。
  2. 功能太多:提供了一些华而不实功能,其实贪多不烂,我们实际的项目中估计也只用到了其中40%左右的功能。
  3. 面向对象的遗毒:强制私有变量,然后通过set/get方法来操作,这是脱裤子放屁的事情,用户想改还是能改,不如直接暴露,还可以节省代码。
  4. 一个函数多个用法:最典型的是config/reg方法,可以完成设置、取出、全部取出的功能,原谅我,那个时候钻了简单的牛角尖,也没有阅读《UNIX编程艺术》
  5. 复杂代码:尽管我一直在努努想把代码写的明了,但有的时候为了实现一些复杂的功能也引入了一些晦涩的代码。

要解决上面的这些问题,修修补补不能彻底,所以准备在2.0大刀阔斧的改一下,结构方面不会有大的改变,主要是一些方法的实现,2.0不会100%兼容1.x系列,但也不会是翻天覆地的改变,希望项目只用一上午就能把代码升级过来,主要的改进想法包括:

  1. 更简单:代码更简单,开发更简单,功能更明了,不会再遵守迂腐的面向对象开发(当然,所有的代码还都是面向对象),如果一个成员变量不是必须私有那就会是public,所有的操作程序员自己控制,省去get/set代码
  2. 更直接:砍掉那些花哨的功能,只提供那些常用的功能,同样的功能只会实现一次,原生PHP能满足的,不再封装,不太能用上的或者个别特殊的,框架会提供接口供扩展
  3. 更高效:大家都喜欢高性能的框架
  4. 更少:核心更少,代码更少,学习成本更少
  5. 更方便:关心业务本身而不是框架

如果没有什么意外的话,2012.12.15前会发布ColaPHP 2.0α1

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn