问题

框架一般用于比较大的项目,而模版一般适用于比较小的项目,这样说对吗?那么除了这个原因,还有什么呢?

满意回答

2012/10/20 13:44

框架就是让你更快,更方便地开发应用,现在主流的PHP框架都支持MVC模式的开发,
M即“模型Model”(可以理解为对数据库的操作),
V即“视图View”(用来输出前端数据),
C即“控制器Controller”(后端逻辑,后端操作),
这样可以把前端、后端、数据库逻辑分离开,方便开发

wKiom1U2GwLjoYD5AAA_pDtkipg552.jpg

控制器把模型中的数据处理后输出到视图,比如
我要在前端页面输出一句话:“你好,xxx”
后面的xxx需要替换为数据库中的用户名,通过控制器读取数据库数据,保存用户名到变量$user_name中。
不同的模板引擎有不同的语法规则,比如我在模板中填写

<p>你好,{$user_name}</p>

通过模板引擎处理,就可以方便输出最终页面了。

一般的框架都会带有一个模板引擎,即V的部分。或者使用开源的模板引擎,smarty就是比较著名的一个

分割线

update at 2012-09-05 15:53:48

下面再给MVC举个例子吧,其实我也是新手就别叫我高手了……⊙﹏⊙b

比如,我们做一个最简单的留言系统,只有一个字段,就是留言的内容
要实现两个最简单的功能:
1.显示留言内容
2.提交留言

传统的开发方式,把所有的代码(sql、php、html)都写到了一起,项目比较大时就不容易维护

现在我们梳理下两个功能的逻辑
1.显示留言内容
逻辑:用户访问->php处理(C)->读取数据库(M)->显示留言内容页面(V)

2.提交留言
逻辑:用户提交->php处理(C)->写入数据库(M)->显示结果页面(留言是否成功)(V)

M就是直接对数据库进行操作的。比如可以把留言数据里的js代码过滤掉。

这个例子很简单,其实不要C也行,比如我们可以在C里判断一下访问IP是不是在黑名单里面,就不读取数据库了,直接显示出错页面。

最后比如我们把数据库读出的留言数据保存在变量$content里,把它输出到模板,根据不同模板引擎写下模板,比如<p>留言内容:{$content}</p>

开发正式的项目的时候你就会理解MVC的含义了,MVC只是一个概念,没有硬性的规定,也不要被MVC束缚。
还是重在实践,建议选个框架,自己动手开发些小项目。

国内的开源框架:

国外的开源框架: