php 的框架与模板

提问者:zhendeaini 提问时间:2016年09月01日 人气:3
用户提问
举个例子,thinkphp是框架、smarty是模板,有人说模板是在浏览器上给人看的,框架是基本功能已经做好,可以直接用它,那请问:
框架=模板吗?
如果不是,请举一个例子说明一下
推荐答案
楼主的认知不对哦,以下为楼主解惑:

框架:在php源码的基础上,开发者将常用的功能进行二次封装形成的代码集合,其本身往往不具备任何可用的功能,其目的仅仅是使开发人员可以基于框架更快的开发出符合要求的应用。例如,不使用框架开发一个用户管理功能可能需要5天,使用框架可以将这个时间缩短到2天。实际上,对于任何一个项目,访问控制、数据库访问、文件处理等功能都是必备的,框架就是将这些常用功能进行了更易用的封装,避免开发人员在通用组件上重复开发,浪费时间。

模板:为了将PHP内容和html内容更好的分离为目的产生的一种应用,其主要目的是为了网页制作人员可以不去学习PHP就能修改页面的内容(可惜不学PHP还要学smarty,因此我个人并不觉得模板真的能带来什么实际的好处)

另外,如dede,DZ,PHPCMS等是基于PHP的产品,本身已经具备了大量的功能,安装之后就能使用,当然,因为需求的不同可能需要在该产品的基础上进行二次开发。

综述,模板没有太大的价值,完全可以在非用不可的时候再去学习,对于PHP开发人员来说,smarty可以立刻上手。它可以(也只能)被框架或PHP产品使用。框架是必须掌握的,定制性很强的项目必然都是基于框架开发的。PHP产品,如果你要开发的项目和某个PHP产品的功能达到80%以上的契合,那么应该考虑基于该产品进行开发。

一些网站提供简单的博客,留言板等的源码,不基于框架的小项目实际上只能称为练习,只有参考价值。

注:不是说不使用框架的项目就不算项目,事实上如果一个项目如果没有使用某某框架,其项目的一部分代码也必然的会具有框架的特征,即自定义框架也是框架。
辅助答案
用户:3838438
2016年09月02日
thinkphp是框架、smarty不是模板,而是模板引擎。其主要功能在于实现html和php语言的分离!
混编就是类似于这种:
<select>
<?php

foreach($array as $value){

echo "<option>$value</option>";
}

</select>
而smarty则是a.php文件中利用$smarty = new Smarty();
$array = "1,2,3";
$smarty->assign('array',$array);//这里前面的array是将$array传值到模板a.html中并重新命的名
$smarty->display("路径+a.html");
在a.html中
<select>
{foreach from=$array item=foo}<!--这里的$array 是上面重新命名的array而不是php中的$array,虽然两个值是一样的。-->
<option>$foo</option>
{/foreach}
</select>

上面说的是smarty模板引擎
而你问题中提到的thinkphp框架。是本身封装了很多方法。可以直接使用,而在thinkphp中php向模板(即html)文件传值时,使用的是$this->assign();调用模板使用$this->display();其实与smarty模板引擎相似。但其中还包括其他的。例如方法M还有方法D直接实例化对象,进行查询等等
用户:jurnzhou
2016年10月16日
理解好MVC模式,你就明白了。框架和模板压根不是一回事,但是对php而言,大部分会混在一起,比如thinkphp他一般会整合smarty使用,而smarty一般也不会单独使用。基本上都会混在一起,但确实不一样。
用户:lhs981
2016年09月20日
肯定不是啊···框架是处理业务逻辑流程的··而模板只是用来展示数据的····
用户:www.qq.com44766266
2016年09月21日
要知道框架只是事先给你把开发过程中能用到的功能都封装好了,模板只是让你和美工分工处理,你不想你一边写程序一边还要分心写界面吧?所以框架不等于模板引擎,它们各司其职!是两个不同的程序!
用户:sheldonzhang
2016年09月13日
模板是框架的组成部分。框架为实现mvc设计模式,一般都会使用模板机制来写V(view)层,实现V层无php代码,在需要动态输出或者有简单逻辑判断的地方根据模板语法和模板标签来实现。这样,V层代码的编写工作就可以交给前端人员,因为前端人员无须掌握php,只需要掌握相对简单的模板语法和标签即可,这样的好处就不言而喻了。
Smarty是一个强大的模板引擎。用smarty写的V层代码经过“编译”——模板解析引擎按照smarty语法机制进行“翻译”,将有smarty标签的地方自动“翻译”成php代码……
框架可以说是这样一种东西——他已经是一个应用的半成品了,具有完整的结构,你只需按照自己的需求去完成你的系统。而作为MVC框架,模板只是其V部分。
很多框架都有自己的V层机制,如Zend Framework有Zend_View。但是你同样可以将smarty整合进Zend Framework来代替Zend_View的模板,作为其MVC中的C部分。