如何让CI更完整,更好用
最近我也在看几个PHP框架比较起来CI的优点不少,但还是缺乏一些网站开发方面必须的模块,还得整合其他开源的项目进来。
比如
ACL,用RBAC实现用户访问控制的模块
AJAX,现在是整合JQuery,prototype,Ext-JS等等
ORM,现在的ActiveRecord的功能比起RoR还是差一些
...
虽然说这样设计会让CI有更多的灵活性,但对PHP新手来说去比较分析完PHP框架后还要比较其他的需求的开源框架,真是勉为其难了。
我想CI中国中我们可以做的一个事情,把这些CI框架内还不包括的,而国内网站项目开发中常用的模块进行评估和整合,这些模块可以从其他开源项目中汲取,比如从Zend Framework里的类库,做一个CI的一个扩展整合包。
方便新手学习和开发。
附件是我收集的一些CI扩展的模块 支持
最好说明一下,各个下载文件的功能。 原帖由 moonster 于 2008-2-12 08:13 发表 http://codeigniter.org.cn/forums/images/common/back.gif
支持
最好说明一下,各个下载文件的功能。
http://codeigniter.com/wiki/
这些扩展你都可以在官方的Wiki上面查找得到的 楼主的建议非常棒,我确实也是觉得如果用CI开发网站,需要很多的扩展模块。
我其实整合过一个 CI + FreakAuth 的东东,等我上班后就共享。 我的建议是CI中国的同仁,一起分析扩展需求,建一套CI扩展的插件集合。
另外根据国内的互联网的需求,可以考虑基于CI做一个开源应用项目,我觉得CMS这个主题不太好。不如直接做一个有特色的网店系统,类似ECShop这样的,或者类似Facebook这样的社区系统,CMS架构已经太多了。
[ 本帖最后由 jianzi 于 2008-2-12 16:21 编辑 ] 这个主题很有意思,我前阵子一直在琢磨相同的问题——
CI的功能性不完整,这到底是优势还是劣势?
一方面,我觉得我现在要开发一个中大型的项目,需要一个功能完整,架构成熟的框架,CI过于“轻量”。另一方面,CI的轻量级特征使我能够瞬间上手,并且许多功能化的模块都可以依照自己的意愿来开发。
用CI的好处很明显,那就是上手快,扩展性高,自由度高。坏处也很明显,由于自由度高,新手很可能会将程序开发的乱七八糟,另外,由于功能集成的少,许多东西要靠社区开发的第三方插件来实现。
从某种意义上而言,我更倾向于RoR的模式。比方说,RoR集成了Prototype来提供AJAX的功能,但是你并不一定要用它。你仍然可以用jQuery或其他的JS框架。
好在,CI和Zend Framework可以共存(具体的可以google一下)。:) 沧蓝一语道破 CI 最主要的特点。也就是“过于轻量”。呵呵。
好处和坏处都是由于过于轻量造成的,所以我们要好好在“过于轻量”上做文章。 我认识一些CI的开发人员,其中一个在中国做项目的时候还和他共事过,关于CI的“过于轻量”,也曾经问过他。得到他的回答后恍然大悟。CI的开发团队其实就是博客系统ExpressionEngine的开发团队,这个团队在开发了EE这样一个巨无霸后(EE的系统复杂的令人咋舌,光是数据库中就有70多个表,几乎把网站开发的所有功能都集中在了管理界面中,开发人员甚至不需要直接建数据库表,而是通过其中的weblog和custom fileds即可完成整个数据结构的创建,并且附带了一个十分完整的smarty模板系统,完整版本的EE身材十分庞大壮硕,不仅可以做为博客系统和CMS使用,还可以挂载配套的图片库、wiki和论坛,在CI的官方网站版权说明中我们可以看到整个CI的官方站点都是EE建的),又将EE的核心抽象层单独剥离出来加以改进,就是现在我们看到的CI。
有趣的是虽然这个团队开发了EE这样一个巨无霸式的系统,但其团队开发人员却是崇尚自由和Tiny的开发理念。也正因为开发团队这样的理念,CI被设计成一个超轻量级的框架,虽然系统的复杂度仍然不低,但功能却一直围绕着网站最核心和比较难于处理的几个部分在打转,由于ORM的效率一直很成问题,适用性也不见得有多广,开发团队甚至干脆取消了在CI中包含ORM的想法,代之以Database类,而数据库也正是CI中最庞大的一个类,我们在文档中就能看出来。
事实上,CI在设计的时候就是想做成一个适用性广的框架,因此也没有在其中包含Ajax,就是因为Ajax框架太多,干脆一个不包含,由得项目团队自己选择,上面说的那个朋友就是一直在用Jquery,而他的同事则有人喜欢用YUI,有人喜欢用prototype,为了适应各种不同类型的网站开发需要,CI提供了一个插件机制,虽然这个插件被很多开发人员斥为鸡肋,但其真正的能量似乎尚未被挖掘出来,按照开发团队的想法,CI是作为一个平台存在的,只封装那些在各种开发中都普遍会用到和开发十分麻烦的功能,至于其他功能,则由用户自行扩展积累。自己对自己开发的东西最为了解,在积累了一段时间后,用户大可以根据项目的需要自行选择插件,在最大程度上保持系统的小和精悍。也就是说,重在积累。
其实,我觉得愿意分享的朋友也不妨把自己写的CI插件库写好注释和文档,附带一个许可证放出来共享和共同完善,我觉得这样的各种插件集合远比基于CI来写一个针对某类型网站的系统更有意义。毕竟网站开发的需求各不相同并且是在不断变化的,即使同是网店,同是论坛,其中的功能细节也可能差别极大。 不错,见解精辟!支持 :lol 搞个CN的CI Wiki就好了嘛
页:
[1]
2