作者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
1F:推 chchwy:推 scaffolding已经不推荐使用了喔 12/24 15:38
2F:推 g70321:其实我做到後来 实在不喜欢一个php档案 程式码很长 12/25 00:41
3F:→ g70321:最後我的做法 action都会拆成很多个controller了 12/25 00:41
4F:→ ybite:我觉得CodeIgniter的MVC其实是一种「简化版的MVC」 12/25 04:31
5F:→ ybite:我会觉得Model=Database,Controller=Program,View=Template 12/25 04:33
6F:→ ybite:也因为非常简化,你会觉得硬分成MVC实在没什麽意义 XD 12/25 04:34
7F:→ ybite:(Ruby on Rails的MVC就是一个相较之下比较复杂的例子, 12/25 04:35
8F:→ ybite:Model是ActiveRecord,Controller是RESTful CRUD,View则有 12/25 04:36
9F:→ ybite:自己的Template Engine。Rails的MVC例子值得细细参考。XD) 12/25 04:37
10F:→ ybite:Scaffolding的本意是「一行做出一个可以CRUD的Controller」 12/25 04:47
11F:→ ybite:所谓CRUD是指Create, Read, Update, Delete 基本四操作 12/25 04:48
12F:→ ybite:不过这样简单又有点粗糙被拿掉我想也是意料之中 qq 12/25 04:48
13F:推 markmcm:对不起这麽挽回,谢谢,我会照你的方式试试看 12/27 21:39