作者StringR (MoO~)
看板PHP
標題Re: [請益] 想理解MVC(使用CodeIgniter)
時間Fri Dec 24 13:35:22 2010
※ 引述《markmcm (Markmcm)》之銘言:
: 可是問題來了,我要設計的時候總不知道該從哪方開始設計。
: 這個三角圖沒有說 C 對 V 通常是 1 對多的關係
: 也沒有說一個 C 通常要對幾個 M
: 我要怎樣才知道何時該開第二個 Model
: 何時會需要多個 Controller
: 什麼時候一個 Controller 方法會對應多個 View
分享一下最近練習CI的感想,我用CI的時候還不會OO,只會傳統procedure式的寫法,
,而且我以前碰最多的語言是組語,所以應該算是白紙一張吧?(遮臉)
我目前的在CI上開發的順序是,先把view做好,然後依照我的功能,決定有幾個
controller,controller在寫的時候,再依照需要開專屬的model。
例如:留言板功能。
工作順序:
1. 準備網頁畫面。
2. 決定功能。
3. 撰寫程式。
1的部份就不多說了,看個人美感跟喜好。
2的話就是拆解功能了,例如:
1. 留言顯示
2. 留言編輯
3. 留言刪除
4. 留言回覆引用
5. 使用者註冊
6. 使用者登入登出
7. 使用者設定資料
像以上幾個功能,就可以分出兩個主controller,一個是留言用的,一個是使用者。
所以由上面來看,使用者註冊、登入、設定個人資料各需要一個view。
這樣使用者這個controller就需要至少3個view,一對多的狀況就跑出來了。
至於model的部份,使用者跟留言的model應該有很大的不同,畢竟功能需求完全不一樣。
所以應該也略能解釋model的使用時機。
: 感覺要開發中等大小的程式時,沒有個開發的基準點。
: 也許是我只瞭解OO,所以感覺要定義物件比較簡單,
: 但是像是 Model 這種東西要定義感覺有些困難。
model的話,我就純粹當他是個function包來用而已... XD
: 重點就是我知道 MVC 是什麼,但是我不知道其設計的準則及方法。
我剛開始寫的時候,也有同樣的困擾,不過後來改成先做view後
再決定功能,就沒這困擾了。
: 另外一個小問題是,一個 Controller 只能 Scaffolding 到一個 table
: 請問這有原因嗎?(為何不能一個方法就scaffold到一個 table)
Scaffolding不曉得是幹麼的,不過2.0不是要拔掉了嗎?不如趁現在就當作
沒這玩意吧!XDD
: 我覺得不知道這原因代表我還不瞭解CI的使用方法。
: 要是我想設計一個使用者能註冊且登入,然後貼文評論的程式,
: 通常各位會採哪種方式跟順序作設計呢?
: 謝謝閱讀:D
程式新手分享一點粗淺心得,希望對你有點幫助!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.117.35.243
推 chchwy:推 scaffolding已經不推薦使用了喔 12/24 15:38
推 g70321:其實我做到後來 實在不喜歡一個php檔案 程式碼很長 12/25 00:41
→ g70321:最後我的做法 action都會拆成很多個controller了 12/25 00:41
→ ybite:我覺得CodeIgniter的MVC其實是一種「簡化版的MVC」 12/25 04:31
→ ybite:我會覺得Model=Database,Controller=Program,View=Template 12/25 04:33
→ ybite:也因為非常簡化,你會覺得硬分成MVC實在沒什麼意義 XD 12/25 04:34
→ ybite:(Ruby on Rails的MVC就是一個相較之下比較複雜的例子, 12/25 04:35
→ ybite:Model是ActiveRecord,Controller是RESTful CRUD,View則有 12/25 04:36
→ ybite:自己的Template Engine。Rails的MVC例子值得細細參考。XD) 12/25 04:37
→ ybite:Scaffolding的本意是「一行做出一個可以CRUD的Controller」 12/25 04:47
→ ybite:所謂CRUD是指Create, Read, Update, Delete 基本四操作 12/25 04:48
→ ybite:不過這樣簡單又有點粗糙被拿掉我想也是意料之中 qq 12/25 04:48
推 markmcm:對不起這麼挽回,謝謝,我會照你的方式試試看 12/27 21:39