PHP 板


LINE

看板 PHP  RSS
※ 引述《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 很像,非常好用。) ------------------------------------------ 当然 CI 不是没有缺点。 第一点是他的 session 机制非常难用,根本就是反直觉。 所以基本上我都是回头用 $_SESSION 而不是用它内建的 session 。 第二点是它对於 view 的 helper 着墨的有点少, form helper 其实并不好用,我基本上已经客制到有自己一套了。 第三点算是第二点的延伸,他没有一个好用的 layout 系统。 一般来讲很多 MVC 专案的模式都是会切 layout 跟 content 两个 view, layout 放一些 header/footer 的资料,content 则专注在处理特定页面内容。 这点我是自己实作两层的 $this->load->view() 来达到一样的效果。 第四点,cache 机制很难用, 每次都在那边写 cache 有没有 enable 的判断式真的是会想杀人。 所以我把 model method 的 cache 自己加工过,让他变得相对好用。 我写了一个 MY_Model 里面有这样的 function https://gist.github.com/tony1223/10722934 来达到我可以直接 cache 一个 model 的 function, 如果本来我 controller 是这样写 class UserModel extends MY_Model{ public function get_all(){ return $this->db->get("users"); } } $users = $this->UserModel->get_all(); 我可以完全不用改 model 任何 code ,只改调用的地方, 就达到 cache 这个 function 传回值的效果 //key,时间 $users = $this->UserModel->cache__get_all("cachekey_users",60); 不然原本是每个调用到 cache 的地方, 都要写一次判断 cache 在不在跟塞 cache 的作法,真的是会写到想杀人。 (新一点有支援 closure 的 php 甚至可以不用跟 model 绑死了。) (对了,cache 有一个作法是整 view 的,但我个人比较喜欢这种, 至少我可以随时掌握我想 flush 哪个 key 跟要怎麽处理资料。) 最後一点是对於用 controller function name 当作 routing 这件事情, 让 "new" 这个字只能透过写 routes.php 来达成实在是有点机车。 基本上我觉得 CI 很忠实地呈现不找开发者麻烦的精神, 他没有打算解决很广大的问题,所以他没有真的那麽包山包海, 也不会让你觉得好像开使用之前要先弄懂很多很多的结构,就相对单纯。 对於复杂的问题你得靠自己, 但如果你有能力自己加工,他还是一个很棒的基础。 我觉得作为一个核心,小而迷你的 CI 总是比一些肥胖的 framework 好。 -- 网页上拉近距离的帮手 实现 GMail丰富应用的功臣 数也数不清的友善使用者体验 这就是javascript 欢迎同好到 AJAX 板一同讨论。 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.168.132.30
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/PHP/M.1397560138.A.285.html
1F:→ MOONRAKER:哈~我们都用一个很简单的lib,自动include主要的page 04/15 20:56
2F:→ MOONRAKER:这个页框可以另外维护,就跟masterpage一样 04/15 20:57
3F:→ MOONRAKER:session是乾脆用别人写的lib包装$_SESSION换掉他的 04/15 20:57
4F:推 amhuang:CodeIgniter 自从ellislab 丢出寻找新东家的讯息 04/15 22:22
5F:→ amhuang:就都没再更新了, 真希望能继续活下去 04/15 22:22
6F:推 DongFeng:PUSH 04/16 01:40
7F:→ alog:php framework太多了 真的会有人接手@.@? 04/16 18:52
8F:推 j87b0003:个人觉得ci真的很好用… 04/16 22:00
9F:→ herb123456:推荐你用Symfony2,你提的问题都解决了 04/23 15:05
10F:→ herb123456:我是没写过CI,但我猜他的缺点就是很多基本东西要自己来 04/23 15:06
11F:→ herb123456:我用Symfony2几乎都专注在核心演算法上 04/23 15:07
12F:→ herb123456:很多基本功能都做得好好的等我使用,很适合做快速开发 04/23 15:07
13F:→ TonyQ:不是解决问题就是好东西,Symfony2 对我还是太复杂了 04/24 23:09







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP