MVC 没有对各成员的分工做明确限定,于是也就没有“片面”一说了
Model 是业务模型,每个项目的业务模型都不会是完全相同的
数据库操作至少是 Model 的一部分C 只是 M 和 V 之间的桥梁

解决方案 »

  1.   

    没必要理解的那么死代码分离 模块化就行不用在乎是不是MVC 
      

  2.   

    你这样理解就可以了,尽量把可以封装成方法或函数的代码块,尤其是可以用来复用的。都放到M中去。M可以是class,也可以是个函数库,然后C接收用户传的参进来,调用M的方法,输出给V。比如现在有个小需求为:接收用户输入的内容,然后把它前面连上字符串"you are: "后显示在页面上。C:
    Mycontroller.php
    -----------------------------
    include 'model/model.class.php';
    include 'libary/model.class.php';
    $user_text = $_POST['user_text'];
    $text = text::make_text($user_text);
    view::assign('text',$text);
    M:
    Mymodel.class.php
    -----------------------------
    class text{
        public static function make_text( $user_text ){
              return 'you are: ' . $user_text;
        }
    }
    V:
    view.libary.class
    -----------------------------
    echo $this->text;
      

  3.   


    这个硬要说也可以说是业务逻辑中的一些小细节。
    你可以放到model中。你可以放到你的article.class.php中,这些都作为一些private方法。当$article->add();时,add方法内部去调用这些用来check内容的方法。当然最好的应该还是把check相关的方法单独放在check类中。在article类中实例化check类或直接继承check类来完成这些操作。因为你其他的类可能也会需要用到这些check方法,独立处理可以更好的复用,这些就属于设计模式的问题了。其实严格来讲,check模块其实不应该属于model模块。它应该属于系统的libary。就像你使用php的内部函数一样,它们只是作为一种工具,辅助你完成你的业务逻辑。
      

  4.   

    对于业务模型,你理解的是对的。但是放在 C 里就不对了
    mvc 实际是从桌面应用程序开发总结出来的
    在桌面应用中控制都是调用操作系统提供的功能,与具体的业务没有直接的联系
    比如点击一个按钮或菜单项,界面就中出现了相应的变化
    将点击事件与界面的变化联系起来的就是C,而具体会发生什么变化是由M完成的,V只负责显示
      

  5.   

    感谢版主与ShadowSniper的解答,已结贴