V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
killall
V2EX  ›  PHP

常规问题,你们在写MVC的时候....

  •  
  •   killall · 2010-12-05 20:34:44 +08:00 · 5943 次点击
    这是一个创建于 5100 天前的主题,其中的信息可能已经有所发展或是发生改变。
    MVC架构的程序你在写“添加数据”的时候是直接在控制器里面insert,还是在模型里面建立一个带有参数的model方法 然后 当控制器输入的时候 通过这个MODEL方法写入数据库?
    15 条回复    1970-01-01 08:00:00 +08:00
    TheOnly92
        1
    TheOnly92  
       2010-12-05 20:35:43 +08:00
    后者 +1
    MarkFull
        2
    MarkFull  
       2010-12-05 20:41:04 +08:00
    似乎有一个database access layer来管这件事情,在controller和model之间
    http://en.wikipedia.org/wiki/Data_access_object
    killall
        3
    killall  
    OP
       2010-12-05 20:44:32 +08:00
    后者 貌似很繁杂啊
    killall
        4
    killall  
    OP
       2010-12-05 20:45:50 +08:00
    @MarkFull 不知道这是什么?
    TheOnly92
        5
    TheOnly92  
       2010-12-05 20:46:28 +08:00
    利用 mysqli 呀,楼主有使用任何 framework 吗?
    darcy
        6
    darcy  
       2010-12-05 20:47:52 +08:00
    各司其职,控制器做流程控制,验证和保存数据交给模型(model)来做。
    Sunyanzi
        7
    Sunyanzi  
       2010-12-05 21:13:16 +08:00
    一定是后者 ... 不然还要 Model 做什么 ...
    highkay
        8
    highkay  
       2010-12-05 21:47:26 +08:00
    前者是贫血模型,后者是充血模型。
    java里面贫血比较多,常见的一个bean就是一个model。

    谈不上好坏,具体和你的项目以及你用的框架决定。
    killall
        9
    killall  
    OP
       2010-12-05 22:15:13 +08:00
    谢谢,受教了。
    POPOEVER
        10
    POPOEVER  
       2010-12-05 22:24:53 +08:00
    Model
    voidman
        11
    voidman  
       2010-12-05 22:50:27 +08:00
    Model +1
    qichangxing
        12
    qichangxing  
       2010-12-06 22:20:49 +08:00
    # models/post.py

    def new(title, content):
    db.insert(tb, title, content)
    return True


    # contorllers/post.py

    from models import post

    Class Post:

    def POST(self):
    i = web.input()
    title = i.get('title', None)
    content = i.get('content', None)
    if not (title and content):
    # warning...
    post.new(title, content)
    raise web.redirect(...)
    chuck911
        13
    chuck911  
       2011-04-29 15:05:52 +08:00
    看情况,如果太简单就一句话就不要封到model里面了
    如果把model当成领域对象,那就不要只把它当成免写sql的工具
    看你自己的感觉~重要的是,敏捷
    apoclast
        14
    apoclast  
       2011-04-29 15:42:18 +08:00
    @highkay 这种说法还是第一次遇到, 不过真有意思
    no2x
        15
    no2x  
       2011-04-29 15:47:23 +08:00
    后者 + 1,识别读写,识别数据库,识别表
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5272 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 08:48 · PVG 16:48 · LAX 00:48 · JFK 03:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.