解决方案 »
- 简单的页面跳转问题
- 正则求助……
- PHP写的WEB代码,返回大约3000条记录,大量数据,如何在客户端下载更快?
- 现金求解:某类考试的毕业生判断条件的树形显示解决办法
- 如何用echo输入如下内容?
- 局域网不能远程登陆phpmyadmin
- 如何利用PHP控制EXCEL的单元格属性?如列宽、边框、字体等等!!!
- PHP中的类到底是怎么回事
- 我在win2000下安装php4+apache_1_3_12,怎么调试的时候显示php源代码啊?如何让它正常显示呢?急用!!!
- wamp 环境 php_mongo.dll 扩展安装包不上,求大神帮忙
- 关于File_get_contents函数问题
- html5的离线储存可否用在php上?
所谓的主流开源框架对服务器主机的性能要求是很高的,要完成一次网页请求,平均引入三十多个文件,什么概念,对于查询,根本就不考虑查询次数的,核心宗旨便是要MVC架构,其他的什么都不管了(访问速度、可维护性、安全、性能。。)。
MVC,我是不用他的。
现在的PHP越来越陌生了,明明自己的代码可以实现所需的功能,然后过来了一个从java或者.NET 或者C++ 转过来的,动不动就指手画脚,硬是要把PHP当成java来使用。
“理解了概念就行!关键能把东西应用到开发中写出过硬程序才是硬道理!”
是啊,但是PHP原本是一个很简单的东西,为什么其他语言的写代码的非得要他用cakephp、thinkphp这些臃肿、不灵活的代码???
反正MVC我是没用的。
但是我认为MVC的一些思想还是得有的
能把代码写的更有结构感,更易于维护,难道不好么?
你觉得thinkphp更易于维护?代码一大堆,乱七八糟。建个文件夹都不准随便建。
国内PHP里面提到MVC其实就是指cakephp 、 thinkphp 、 zf这些东西(国外就不清楚)。
OO还是不OO,框架还是不框架,模式还是不模式....等等经常讨论来讨论去.....随便说几句吧,其实我们每个人写软件的时候都在追求使用某种模式或框架的, 程序写到一个规模(不需要很大),你自然而然地会为了优化而整理其结构,比如说重复的代码会写成函数, 很多web程序都把同样的请求预处理放进common.php里.... 等等, 随着软件规模进一步增大,这样的优化也就越多, 也就更需要从整体上来把握你的软件.
而这种对软件的整体把握,往往取决于你对这个软件的看法(抽象), 这种从整体上的抽象,其实也是一种为复用而作的对软件整体的优化,(重复代码写成函数这种是从细节做上的优化)
从这点上来说,几乎每个人都在用框架,不用别人的,就会用自己的,不用MVC,也会用ABC,CBD(瞎说的) 而为什么现在MVC这么流行,没啥特别的,第一个,MVC还是挺好的,第二个,别的现在没它这么流行....
以后呢,很难说....关键在web本身在变化,IT在变化,再过若干年,编程的思路和方法也许会完全不同.那么用不用MVC当然也在各人,如果你觉得你的框架更好,当然可以用. 一个好软件的成功因素很多,不要说不MVC,就是不OO,就是不高级语言,只要你够牛,理论上用汇编一样可以写出好软件来.(实际上所有软件最终都是编译/解释成了机器语言,所以理论上一定能). ok,上面说的是理论上.....待会我说实际上.....
经常听人说自己写的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有很多企业内部在使用,大部分不开源,或还没有开源..
MVC是一种理念和架构.框架实现了MVC,但框架不一定是有效率的.
MVC一种.逻辑分层的根念.C控制层,实际是对请求进行验证和分流,V展现和用户接品层,M是模型层,但M更多认为是一种业务模型(事实现在许多框架是一种数据库模型)
即请求逻辑,业务逻辑和显示逻辑分开,做到相对独立,并提高代码重用率MVC可以简实现,也以复杂实现
比如:CI框架,核心就是一个加载类.实际上,这对于MVC已足够, 但如果同时要实例化多个数据库类,性能就会变慢.模型类的实现是复杂的.公共框架为了能实现更多功能,适合更多人和情况开发,效率低下是事实.总体来说,适合中小企业开发,不适合高效率能网站开发.
而且有一定的使用率说明他的可用性但对于自写框架,可以说国内的这样的人才还是少的.没有一定的实践经验和广泛的web知识,很难写出一个好的框架.很多人把java的般过来,但有多人少用过java做过高性能网站, 更不用说PHP了.框架可以提高开发效率,但不一定提高网站性能.
实际上许多大公司都有自已的框架, 但好的不多. discuz在ucenter和uchome中使用了新的MVC架构,原码也不是很多.
私有框架一般都坚持了实现高效原则,而不是去做万金油. ucenter就是例子. 但要做成公共框架,也要做很多.遗憾的事PHP领域没有一个简单和高效率的框架.据说discuz已在开发分布式应用,所以,对于高性能综合站来说, 高性能和分布应用,可能成为新框架的开发方向.
对于框架,最早起源于ruby on rail, 但ruby 的服务器有这种机制,即一次加载对象,即常驻内存.而PHP是没有这种机制的.PHP的APC或其他加速机制好象只能将部分文件放在内存,并不将对象常驻内存.所以,每次请求,均要实例化所有类.所以,有时include文件多一点的问题,可以看看PHP的加速机制能不能解决.(这个也不具备普遍性,许多用户没这个权限)
现在的也可以都叫框架。
框架不能任意扩展限制很多,但是框架把开发路线都压缩在了可控的范围内,
框架可能只适合人员调动比较频发,经常吸收新血液的公司!
这样才是正确的理解,但是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了
即便是你在使用面向过程的方法书写代码时,也不可避免的受其影响(严格的说不是受他的影响,而他是方法的抽象)
随便打开一个你的程序,都可以看到:这部分是负责输出界面的、那部分是负责算法的,他们之间又是由控制流代码联系在一起的
各种框架应用了MVC思想。可以这么说吧,框架之于MVC,正如黑马之于马。要达到目的地,可以骑黑马,也可以不骑,可以骑其他马,甚至可以步行。
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是这样的,不知道对不对,大家交流一下。:)
1、楼主很激动,但是楼主的概念有些模糊。
2、MVC是种思想,页面表现和功能实现尽量分开,便于维护。
3、ThinkPhp,cakephp等都是Mvc做的较好的开源框架。
4、为了实现MVC结构,用到了模板,Smarty是较常用的模板之一。
5、Web开发中,MVC三层结构分的不是严格,一般分到MC/V两次机构就行。
mvc不怎么适合php。用smarty就蛮好啊。
维护起来还是好点其实大家只要知道弄懂就行了哦.兄弟们给我顶...
比如ZF,它运用了MVC架构,但是ZF除了MVC分层还提供了很多有用的封装。