※ 引述《poopoo888888 (阿川)》之铭言:
: 小弟在公司用CI约莫半年
: 看到网络上对CI的批评很多
: 他过时、他不是OOP、他不是MVC
: 但都是一些大方向的描述 不够明确
: 可以请教各位前辈的意见
: CI哪些地方很糟糕?哪些地方值得改进?
: 谢谢各位 小弟学了一个东西后就很想分析他的优缺点
: 我就先抛砖引玉了
: 在system/core的资料夹 有个Common.php档
: 定义了CI一大堆的global function
: 但是global function跟global variable多了都是不好的
: 整理的不够好、然后再到处用这些global function 简直是硬干
: 还有吗?
: CI哪些地方很糟糕?哪些地方值得改进?
: 同步在SO发问
: http://stackoverflow.com/questions/23028540/bad-patterns-in-codeigniter
它最糟糕的点是 CI 团队已经没在维护他了,
但它我认为算是有 OOP 了,有类别能继承能复写是有什么好不 OOP 的。
MVC ,他有 Model 有 controller 有 view ,看起来该有的也都有了。
我用了 CI 两三年有了,一开始用就喜欢它,
开启一个新专案只要几分钟不到一解就可以开始有最小单位的组合。
到目前为止就 php 而言,它还是我最喜欢的 framework。
(笔者写过 JavaEE/.net MVC/rails,我想不是见识浅薄的缘故。)
我对 CI 的看法是它非常着重 Controller/Model,
也就是如果单纯写 controller/model ,你会觉得它考虑了很多事情。
像是 controller 加 function 等于加 routing 的 convention,
这点让他变得非常好用。
对 lib 跟 helper 的切法也还算聪明,
就 lib 而言你只要对任何第三方的 lib 写一只 wrapper 就可以无痛整合。
就 helper 而言,也完全没有负担。
搭配 autoload 的机制更是世界变得轻松美好。
然后 remap 的机制更能让你轻松做到最最基本的登入权限控管,
可以在真正碰到 controller 的 function 之前,
从源头就一次检验是否有登入权限并做登入。
(跟rails 的 :before_action 或 JavaEE 的 filter 很像,非常好用。)