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/m.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燈, 水草

請輸入看板名稱,例如:Gossiping站內搜尋

TOP