本帖最后由 default7 于 2010-12-10 22:42:44 编辑

解决方案 »

  1.   


     所谓的主流开源框架对服务器主机的性能要求是很高的,要完成一次网页请求,平均引入三十多个文件,什么概念,对于查询,根本就不考虑查询次数的,核心宗旨便是要MVC架构,其他的什么都不管了(访问速度、可维护性、安全、性能。。)。

    MVC,我是不用他的。
      

  2.   


    现在的PHP越来越陌生了,明明自己的代码可以实现所需的功能,然后过来了一个从java或者.NET 或者C++ 转过来的,动不动就指手画脚,硬是要把PHP当成java来使用。
    “理解了概念就行!关键能把东西应用到开发中写出过硬程序才是硬道理!”
    是啊,但是PHP原本是一个很简单的东西,为什么其他语言的写代码的非得要他用cakephp、thinkphp这些臃肿、不灵活的代码???
      

  3.   

    我觉得用用smarty就可以了。哈哈!
    反正MVC我是没用的。
    但是我认为MVC的一些思想还是得有的
    能把代码写的更有结构感,更易于维护,难道不好么?
      

  4.   


    你觉得thinkphp更易于维护?代码一大堆,乱七八糟。建个文件夹都不准随便建。
    国内PHP里面提到MVC其实就是指cakephp 、 thinkphp 、 zf这些东西(国外就不清楚)。
      

  5.   

    自己写一个框架`用smarty将界面与程序分离,就可以了
      

  6.   

    楼主很火爆,哈哈这个话题真的很够讲的,其实不光是php社区,就是java啦.net啦这些社区里,也是就这些 
    OO还是不OO,框架还是不框架,模式还是不模式....等等经常讨论来讨论去.....随便说几句吧,其实我们每个人写软件的时候都在追求使用某种模式或框架的, 程序写到一个规模(不需要很大),你自然而然地会为了优化而整理其结构,比如说重复的代码会写成函数, 很多web程序都把同样的请求预处理放进common.php里.... 等等, 随着软件规模进一步增大,这样的优化也就越多, 也就更需要从整体上来把握你的软件. 
    而这种对软件的整体把握,往往取决于你对这个软件的看法(抽象), 这种从整体上的抽象,其实也是一种为复用而作的对软件整体的优化,(重复代码写成函数这种是从细节做上的优化)
    从这点上来说,几乎每个人都在用框架,不用别人的,就会用自己的,不用MVC,也会用ABC,CBD(瞎说的) 而为什么现在MVC这么流行,没啥特别的,第一个,MVC还是挺好的,第二个,别的现在没它这么流行....
    以后呢,很难说....关键在web本身在变化,IT在变化,再过若干年,编程的思路和方法也许会完全不同.那么用不用MVC当然也在各人,如果你觉得你的框架更好,当然可以用. 一个好软件的成功因素很多,不要说不MVC,就是不OO,就是不高级语言,只要你够牛,理论上用汇编一样可以写出好软件来.(实际上所有软件最终都是编译/解释成了机器语言,所以理论上一定能). ok,上面说的是理论上.....待会我说实际上.....
      

  7.   

    实际上....使用MVC及相关成熟框架还是有很多好处的, 
    经常听人说自己写的code不比用这些成熟MVC框架差,但是如果拿出来真的开源的话,是否会比zend这些更有竞争力呢? 
    至少有一点,这些框架开源已经有一定时间,广泛使用,存在的bug较易被发现和改正....就这点,很多闭源软件是比不上的(更不要说个人的东西了),还有,比如zend的开发方式也是开放的,大部分模板都是在社区讨论后才开始开发,不断根据社区的反馈修改,因此也更能适应大部分人的需要. 
    对企业来说,使用成熟框架,除了减少开发时间外,还可以减少培训和新人适应时间,可以容易得到社区支持(比如问题容易google到答案).好处是显然的,所以你看到那么多招聘需要MVC就很合理. 
    对我来说,我也倾向于用成熟框架,尤其在新项目或已有项目没有建立在稳定框架基础上的.一个是我想节省时间,而且我也绝对写不出zend那样水平的代码. 这里说的都是大多数情形,对特定企业的特定项目,需要考虑的因素很多. 用或不用都没有什么对和不对.================================================================================再谈点具体的,
    对你的观点"MVC臃肿、不灵活", 这个我也反对 :) 
    MVC本身只是一个概念,谈不上臃肿,不灵活, 其实你说的是这些个框架(具体的实现), 也就是说是cakephp不好,或者zend不够好,不是MVC的问题 (个人认为,zend就比cakephp简洁,灵活)不过你那zend/cakephp它们和你自己的比,稍有不公,因为它们是设计给整个社区的通用框架,而你的必然是针对你已有项目,针对范围大大不同. 对他们来说,必然不是每个模块都对每个项目必须的,但是只有提供了这些丰富模板,他们才能适应不同项目(这才谈得上灵活吧),  而且,比如zend,各个(大部分)模板相对独立,没用到的模板,不会参与运行,也不会有严重影响效率的问题. 
    ( 如果较真地说,框架当然会影响一点效率,和最直接的php代码比起来的话, 因为必然多点处理啊...不过这种比较有点像拿高级语言和汇编比, 高级语言当然慢,但是......这个关系到到底怎么判断软件质量的问题,有空再聊 )对他们(是谁啊)说discuz!等也算MVC的这话... dedecms我从没看过,不知道,不过discuz怎么也没看出MVC来......这个也说明了好(这里指卖得好的:))软件不是一定要MVC,这个我支持你 再说你的问题:"有哪个开源程序用到了所谓的主流开源框架"
    这个目前的确不多...原因大概我能想到的:
    目前这些有名的开源项目很多已经存在很多年,而起步时MVC的框架还没成熟....
    比如discuz和wordpress都是2002年前后就有了,而zend framework是2005年才开始,
    这中成熟的开源项目都是经过一定时间才能成熟的, 所以目前不多也很正常,将来一定会多起来.
    还有,作为一个专门的开源项目来说,相对需求比较固定,用自己的框架也很正常.zend有很多企业内部在使用,大部分不开源,或还没有开源..
      

  8.   

    可以这么看框架是一种约定
    MVC是一种理念和架构.框架实现了MVC,但框架不一定是有效率的.
    MVC一种.逻辑分层的根念.C控制层,实际是对请求进行验证和分流,V展现和用户接品层,M是模型层,但M更多认为是一种业务模型(事实现在许多框架是一种数据库模型)
    即请求逻辑,业务逻辑和显示逻辑分开,做到相对独立,并提高代码重用率MVC可以简实现,也以复杂实现
    比如:CI框架,核心就是一个加载类.实际上,这对于MVC已足够, 但如果同时要实例化多个数据库类,性能就会变慢.模型类的实现是复杂的.公共框架为了能实现更多功能,适合更多人和情况开发,效率低下是事实.总体来说,适合中小企业开发,不适合高效率能网站开发.
      

  9.   

    对于中小企业来说,公共框架有完整的说明文档和网络支持,也有众多的技术人员和后备人才.
    而且有一定的使用率说明他的可用性但对于自写框架,可以说国内的这样的人才还是少的.没有一定的实践经验和广泛的web知识,很难写出一个好的框架.很多人把java的般过来,但有多人少用过java做过高性能网站, 更不用说PHP了.框架可以提高开发效率,但不一定提高网站性能.
    实际上许多大公司都有自已的框架, 但好的不多. discuz在ucenter和uchome中使用了新的MVC架构,原码也不是很多.
    私有框架一般都坚持了实现高效原则,而不是去做万金油. ucenter就是例子. 但要做成公共框架,也要做很多.遗憾的事PHP领域没有一个简单和高效率的框架.据说discuz已在开发分布式应用,所以,对于高性能综合站来说, 高性能和分布应用,可能成为新框架的开发方向.
    对于框架,最早起源于ruby on rail, 但ruby 的服务器有这种机制,即一次加载对象,即常驻内存.而PHP是没有这种机制的.PHP的APC或其他加速机制好象只能将部分文件放在内存,并不将对象常驻内存.所以,每次请求,均要实例化所有类.所以,有时include文件多一点的问题,可以看看PHP的加速机制能不能解决.(这个也不具备普遍性,许多用户没这个权限)
      

  10.   

    mvc是一种思想,而不是某个软件。根本思想是实现模型-视图-控制器的职能分工。用好了,非常好。
      

  11.   

    楼主好帖,昨天开始接触php,学习中!
      

  12.   

    我也没怎么用MVC,不过楼上某某人说的对,即使不用,他的思想还是要理解的....
      

  13.   

    mvc 思想是好的,但是php发挥不出全部优点(比如m层)。
    现在的也可以都叫框架。
    框架不能任意扩展限制很多,但是框架把开发路线都压缩在了可控的范围内,
    框架可能只适合人员调动比较频发,经常吸收新血液的公司!
      

  14.   


    这样才是正确的理解,但是cakephp 和 thinkphp zf这样的框架太局限性,束缚了开发的灵活性。
    所以一直对cakephp 和 thinkphp 极排斥。discuz的代码是很不错的。有人说他也用了MVC,cakephp 、thinkphp 、 zf 但是根本就没有。
    如果说discuz 7.2版本的和discuz X1.5版本的也用到了MVC,那么我一直是在用MVC了。到现在为止,对于mvc,很头疼的是“有的人脑海中的mvc标准便是用了cakephp 、 thinkphp、zf这样的没,如果没用就不叫mvc,用了才叫”cakephp 和 thinkphp 真的很强大吗?繁琐。
    跟MVC有冤啊,都怪那些HR,总喜欢拿mvc来压人,让我恨死mvc了
      

  15.   

    。。么用过MVC框架 只用过Smarty
      

  16.   

    个人觉得mvc是个思想 不能死扣字眼 具体问题还得具体分析啊 比如discuz,他里面就有mvc的思想,只是没有框架那么明显而已。那些框架可以帮助我们理解mvc的思想,但是只要自己的头脑里面有这个思想了,随时可以抛弃框架的。
      

  17.   

    本来俺很讨厌java和ssh,现在慢慢地接受了,
      

  18.   

    呵呵,最重要的是,争论过后,你认为mvc的目的是什么,mvc的好处在哪,这就够了。
      

  19.   

    MVC 只是一种思想(或说是架构)而不是产品
    即便是你在使用面向过程的方法书写代码时,也不可避免的受其影响(严格的说不是受他的影响,而他是方法的抽象)
    随便打开一个你的程序,都可以看到:这部分是负责输出界面的、那部分是负责算法的,他们之间又是由控制流代码联系在一起的
      

  20.   

    MVC是编程思想,使你的代码更具可读性,更易维护。
    各种框架应用了MVC思想。可以这么说吧,框架之于MVC,正如黑马之于马。要达到目的地,可以骑黑马,也可以不骑,可以骑其他马,甚至可以步行。
      

  21.   

    据我所知,thinkphp是很强大的框架,,如果你觉得不好,那是因为你还没有深入接触
      

  22.   

    谢谢LZ扔了一个如此引起讨论的话题,大家有机会一起交流一下。一开始我也不理解MVC,指导我接触了CI框架,才第一次真正理解的MVC的思想,那个晚上我非常激动!MVC最重要的是区分出控制器、视图和业务逻辑的思想,就一个controller配合对应的view,可以如此方便地创建所有页面。但在实际使用中,觉得CI还是太臃肿了,(尽管CI已经是号称轻量级的框架)。于是自己尝试着自己写一个更简洁的微型MVC框架,仅仅包含处理MVC框架必要的代码,我甚至把模式和试图合并在controller.php一个文件中,并且直接以function建立而不是以类的形式,实际使用中发现对于一些小型的项目站点这样更方便更容易维护。
    function _Product_() // Controller,能被以网址形式访问,如:http://www.mywebsite.com/product/1/
    function show_prodect($id) // Model,只能被PHP文件内部允许调用。
    现在一个普通的网站的结构大概就是这样,且可以实现任何网站,不是很好吗?
    config.php //服务器、数据库等配置文件
    system.php //基本的框架通用文件(10k多左右)
    controller.php //网站的控制器和一般函数
    view.html ... //若干试图文件
    我理解的MVC是这样的,不知道对不对,大家交流一下。:)
      

  23.   

    建议楼主去用一下YII框架  纯MVC,OOP思想. 我刚刚接触了不到1个多月,感觉里面的东西不是一般的。DISCUZ 我只能认为他是VC框架,M还算不上。而且里面自己带到EDBUG,缓存处理也不错! 建议你去看看
      

  24.   

    智者见智吧,根据自己的项目来定,是否需要mvc 以及使用它的优势在哪里。
      

  25.   

    MVC本身只是一个概念,谈不上臃肿,不灵活, 其实你说的是这些个框架(具体的实现), 也就是说是cakephp不好,或者zend不够好,不是MVC的问题 (个人认为,zend就比cakephp简洁,灵活)
      

  26.   

    楼主一直在提说神马灵活不灵活,但你要知道,大项目开发是不可能让你随便地方建文件夹,任意地方写class的,即时代码上实现没任何问题团队开发很重要的一点是规范,不仅仅是注释的规范,框架在某种意义上也可以当做一种规范,包括但不仅仅包括cakephp、thinkphp
      

  27.   

    发表几点看法:
    1、楼主很激动,但是楼主的概念有些模糊。
    2、MVC是种思想,页面表现和功能实现尽量分开,便于维护。
    3、ThinkPhp,cakephp等都是Mvc做的较好的开源框架
    4、为了实现MVC结构,用到了模板,Smarty是较常用的模板之一。
    5、Web开发中,MVC三层结构分的不是严格,一般分到MC/V两次机构就行。
      

  28.   

    我的mvc思想是,程序中多余的功能不要,类似与ci的加载类,如果新功能来了,再加代码,不过要预留扩展接口,不然会过度设计的. 再者实际应用中,我的框架核心代码不超过400行代码,这样在维护性方面和性能方面做个平衡点,也不要非要写oo,毕竟php就是php而不是java .net啥的
      

  29.   

    追逐MVC的人,都是刚开始比较懒的吧,能自己实现的,当然要自己实现,否则又费资源又不灵活
      

  30.   

    虽然php有点像java但是还是与java不同的。
    mvc不怎么适合php。用smarty就蛮好啊。
      

  31.   

    我是新手,个人觉得mvc还行,smarty也不错!
      

  32.   

    是的, 我觉得你应该先搞清楚什么是MVC, MVC仅仅是一种思想. 我觉得你把MVC跟框架画了等号.MVC模式从某种程度上来讲, 会提高学习成本,因为,他的实现往往是用框架提供的. 当然啦. 跟你说的一样DZ uchome, 那种自己搭建MVC的, 算是一种比较轻量级的MVC.PS. 我不反对你的观点. 因为.现在很多框架. 都很笨重.很累赘.很多功能都用不上.对于这样的问题. 没有必要做愤青. 别人怎么用.那是别人的事情. 保持淡定..就OK了```最后..接分. 闪人...不要批我.谢谢
      

  33.   

    也和别人谈过这个问题,MVC倒底实用于PHP否,结论是PHP确实不怎么适合,不像java有GC ,MVC 运行加载很多的文件,所以我现在使用的框架基本是VC 或者是轻量级的MVC,这就的看,项目的实际情况了,没必要非的使用。
      

  34.   

    php鼻祖都说了...php只是工具!!!
      

  35.   

     MVC只是一个开发思想.对于比较小的项目就不必了,大点的还可以用哈
    维护起来还是好点其实大家只要知道弄懂就行了哦.兄弟们给我顶...
      

  36.   

    可能最痛苦的还是制作模板页面,感觉又回到了ASP时代不用框架比用框架性能要好很多,因为加载的资源要少很多,但是比较复杂一点的项目如果不使用框架很难进行扩展、维护此外,框架也是有利于团队开发的,因为它有统一的流程思想
      

  37.   

    请不要将MVC等同于框架。MVC是一种构建思想。
    比如ZF,它运用了MVC架构,但是ZF除了MVC分层还提供了很多有用的封装。
      

  38.   

    客观的说,楼主是个有点儿偏执狂+强迫症的人,我看过楼主很多此类的帖子,上次就是类似的问题,差点儿没有打起来。其实具体情况具体分析,如果是一个团队级的项目,而且规划、需求分析和架构都很强悍,有个远期目标的话,真的用MVC会省去很多麻烦,我之前参与的一个项目就有明显的感觉,用MVC,不一定非要用开源的框架,不是用了开源的框架就是MVC,如果情况允许,完全可以技术经理写一个轻量级的框架,够用就好。看样子,楼主是JAVA出身的,说句公道的,楼主那句:JAVA的MVC才是真正的MVC,PHP的不是。这一句,就真的直接把这个帖子定义为嘲讽贴了。作为一个有素质的喷子,我是来拿分的,但是我真的想说,楼主你在否定别人之前,先听下别人的话,这是起码的尊重。在我看到的你的比较激烈的帖子中,你没几个做到的。不知道你现实生活中如何,你这样的偏执,势必会造成团队的不和谐,我很好奇你在团队开发中也是这样的么?那没有遇到不可调和的矛盾么?如何解决的呢?好了。拿分,走人。
      

  39.   

    坚持自己的,自己用着好用就行,mvc的好处就是好维护,不过这也降低了速度,对每个人的情况都不一样,有的人就是xihuan面向对象,不过支持楼主,我非常讨厌mvc,虽然平时经常mvc
      

  40.   

    谢谢楼主,我喜欢这样的交流氛围!初次涉及MVC,上面的朋友们留言对我帮助很大,给我建立了个思想。
      

  41.   

    mvc并不是指的cakephp,smarty等,mvc是一种开发模式,模板视图控制逻辑,用mvc不一定要用到网上常见的类似于cakephp,smarty,ci等。自己也可以实现mvc。mvc是做快速开发的,前后台逻辑分离。从原理上来说,dedecms也实现了mvc,也用到了模板视图控制逻辑。
      

  42.   

    要说mvc慢,我觉得java更慢,至少mvc中不需要把代码放到虚拟机中执行。
      

  43.   

    要说mvc慢,我觉得java更慢,至少mvc中不需要把代码放到虚拟机中执行。
      

  44.   

    理论上所有web程序甚至是桌面程序都可以使用mvc模式来开发,mvc的最大优点是易于维护,相比起一般传统的编程模式来看,他的效率一般会低一点,但是当你开发的网站有上百个页面的时候,而且经常需要扩展的时候,你就会发觉mvc的好,或者是你需要给客户做网站时,通过使用mvc模式重用以前的代码可以很快捷地构建网站..net上使用mvc模式编程是非常方便的,为此微软也在vs上整合了开源社区上优秀的mvc模板,至于php也是一样道理的.
      

  45.   

    现在我都不想谈论MVC了,更不想什么框架了,最近上项目,搞得头晕晕的,就是框架的错。本来我还觉得自己勉强理解了MVC,一用框架,MVC的概念就变得模糊起来了。郁闷得很