Re: [請益] 想理解MVC(使用CodeIgniter)

看板PHP作者 (MoO~)時間13年前 (2010/12/24 13:35), 編輯推噓3(3010)
留言13則, 4人參與, 最新討論串2/2 (看更多)
※ 引述《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

12/24 15:38, , 1F
推 scaffolding已經不推薦使用了喔
12/24 15:38, 1F

12/25 00:41, , 2F
其實我做到後來 實在不喜歡一個php檔案 程式碼很長
12/25 00:41, 2F

12/25 00:41, , 3F
最後我的做法 action都會拆成很多個controller了
12/25 00:41, 3F

12/25 04:31, , 4F
我覺得CodeIgniter的MVC其實是一種「簡化版的MVC」
12/25 04:31, 4F

12/25 04:33, , 5F
我會覺得Model=Database,Controller=Program,View=Template
12/25 04:33, 5F

12/25 04:34, , 6F
也因為非常簡化,你會覺得硬分成MVC實在沒什麼意義 XD
12/25 04:34, 6F

12/25 04:35, , 7F
(Ruby on Rails的MVC就是一個相較之下比較複雜的例子,
12/25 04:35, 7F

12/25 04:36, , 8F
Model是ActiveRecord,Controller是RESTful CRUD,View則有
12/25 04:36, 8F

12/25 04:37, , 9F
自己的Template Engine。Rails的MVC例子值得細細參考。XD)
12/25 04:37, 9F

12/25 04:47, , 10F
Scaffolding的本意是「一行做出一個可以CRUD的Controller」
12/25 04:47, 10F

12/25 04:48, , 11F
所謂CRUD是指Create, Read, Update, Delete 基本四操作
12/25 04:48, 11F

12/25 04:48, , 12F
不過這樣簡單又有點粗糙被拿掉我想也是意料之中 qq
12/25 04:48, 12F

12/27 21:39, , 13F
對不起這麼挽回,謝謝,我會照你的方式試試看
12/27 21:39, 13F
文章代碼(AID): #1D534T0v (PHP)
文章代碼(AID): #1D534T0v (PHP)