最近开始忙着名册网 的开发,这个网站的前台是PHP,后台是基于JVM的Groovy。PHP做的是大部分展示层的工作,而后台的消息,数据计算,还有即将上线的很多功能,大多由Groovy实现。因为以“先运行起来”为思路,有很多的业务代码也存在于PHP这一层。在选择PHP框架的时候,由于大量业务都由Groovy实现,因此没必要动用Symfony之类的大框架,因此选择了CodeIgniter这个相对简单的MVC框架。从最初需求调研到现在已经整整一个月了,对于CodeIgniter的理解也深入了很多,下面就来介绍一下在实际应用中CodeIgniter的七大优势与五大劣势,以期抛砖引玉。
优势一:简单。
CodeIgniter的确是简单,因为在PHP的世界里往往以数据表作为模型,因此CodeIgniter甚至只需要编写View和Controller包里的文件,而在必须的地方再使用Model,这就是说在学习CodeIgniter的过程中,非常愉快,非常简单,只是二十分钟就可以轻松开始编写CodeIgniter的程序。
优势二:文档。
CodeIgniter的文档组织非常了,也许就因为作者受够了文档组织不好的框架才写的CodeIgniter并以很优雅的方式组织了文档。无论是中文文档还是英文文档,都组织得非常好,翻译质量也很高。
优势三:Helper类。
CodeIgniter集成了很多的Helper类,这些内置的Helper可以节省大量的开发时间。过去在编写程序的时候,在PHP项目中很难像Java下那样一个Jar包丢过来就什么都有了,而CodeIgniter内置的Helper类可以实现基础的很多东西,不需要自己再去实现。
优势四:良好的目录结构
由于CodeIgniter的目录结构组织得很好,所以很容易在这个框架的基础上定制适合自己的框架,无论是以plugin, 库或者Helper的形式,甚至定位框架本身的代码,都很容易。
优势五:大量的第三方Plugin,Helper
这里 包括大量优秀的Plugin,Helper等,可以说包括了开发网站的方方面面。这些东西,都可以很方便地进行复用。
优势六:替你管理生命周期
似乎拿着PHP谈生命周期,意义不如用Java去谈生命周期这么大,但实际上,CodeIgniter在这方面的确简化了很多的开发工作,让事情变得更简单的。
下面说一说它的劣势:
劣势一:社区不够活跃
什么叫社区不够活跃呢?当然不是说用户少,而是说,它没有一个邮件列表,而论坛的方式,对于框架的高级使用者来说,吸引力还是相对要少一些。
劣势二:代码不够漂亮
得承认,CodeIgniter的设计并不优雅,在很多的地方都是有很多的反模式,虽然,它的确是可以工作的。
劣势三:更新不够及时
它已经很久没有更新了,虽然trunk中的代码还算稳定,但对于产品来说,Issue List中的问题需要自己去解决,这是一个问题。
劣势四:Bug太多
虽然不能说CodeIgniter的Bug太多,因为这里也包括了很多来自第三方的库或者Helper的Bug,但的确有很多低级Bug,比如Email类无法正确读取SMTP配置,VCard的类库带着filename属性却不支持,Email不支持vcard附件,base64编码存在问题等等。
劣势五:日志与报错信息不友好
这是PHP的问题,但如果处理得好,框架应该可以提供优雅的日志和报错信息。因此CodeIgniter在这方面还是需要大量改进。
以上就是简单的总结,总体来说对于小项目或者多语言编程的项目,用CodeIgniter做前端还是不错的。