Rumah >php教程 >php手册 >ColaPHP2.0的一些想法

ColaPHP2.0的一些想法

WBOY
WBOYasal
2016-06-06 20:07:491250semak imbas

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

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn