smarty,php smarty 用的人还多吗
smarty,php smarty 用的人还多吗详细介绍
本文目录一览: smarty模板引擎跟TP框架有什么区别?什么是模板引擎?
smarty是PHP模板引擎技术,而thinkphp才是框架
smarty是PHP模板引擎技术,分离了PHP代码和HTML代码,使程序员和页面设计师可更好的管理自己的模块。而thinkphp才是框架,就是了他定义好一些规则,封装好一些常用的操作,你按照他写好的规则来编程,从而使你的工作更有效率。
smarty是PHP官方推荐使用的模板引擎,TP自带的是参考TP写的,不过远没smarty强大,smarty的强大在于自定义标签和缓存,如果用TP整合smarty,当前遇到的问题是在分组时候不能加载模板。
模板引擎:(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。
php的smarty模板引擎有哪些特点
Smarty模板引擎的一些特点:1、运行速度快2、不需要多余的模板语法解析,仅仅是编译一次3、仅对修改过的模板文件进行重新编译4、可以编辑'自定义函数'和自定义'变量',因此这种模板语言完全可以扩展5、可以自行设置模板定界符,所以你可以使用{}, {{}},
, 等等6、诸如 if/elseif/else/endif 语句可以被传递到php语法解析器7、section之间可以无限嵌套8、引擎是可以定制的,可以内嵌php代码到你的模板文件中9、内建缓存支持10、独立模板文件11、可自定义缓存处理函数12、内建插件体系结构如果您想学习更多知识,请访问gxlcms。
为什么使用smarty
目的就是要使PHP程序员同前端人员分离,使程序员改变程序的逻辑内容不会影响到前端人员的页面设计,前端人员重新修改页面不会影响到程序的程序逻辑,这在多人合作的项目中显的尤为重要。
Smarty是一个php模板引擎。更准确的说,它分开了逻辑程序和外在的内容,提供了一种易于管理的方法。可以描述为应用程序员和美工扮演了不同的角色,因为在大多数情况下 ,他们不可能是同一个人。例如,你正在创建一个用于浏览新闻的网页,新闻标题,标签栏,作者和内容等都是内容要素,他们并不包含应该怎样去呈现。在Smarty的程序里,这些被忽略了。模板设计者们编辑模板,组合使用html标签和模板标签去格式化这些要素的输出(html表格,背景色,字体大小,样式表,等等)。有一天程序员想要改变文章检索的方式(也就是程序逻辑的改变)。这个改变不影响模板设计者,内容仍将准确的输出到模板。同样的,哪天美工吃多了想要完全重做界面,也不会影响到程序逻辑。因此,程序员可以改变逻辑而不需要重新构建模板,模板设计者可以改变模板而不影响到逻辑。
现在简短的说一下什么是smarty不做的。smarty不尝试将逻辑完全和模板分开。如果逻辑程序严格的用于页面表现,那么它在模板里不会出现问题。有个建议:让应用程序逻辑远离模板, 页面表现逻辑远离应用程序逻辑。这将在以后使内容更容易管理,程序更容易升级。
Smaty的一些特点:
It is extremely fast.
非常非常的快!
It is efficient since the PHP parser does the dirty work.
用php分析器干这个苦差事是有效的
No template parsing overhead, only compiles once.
不需要多余的模板语法解析,仅仅是编译一次
It is smart about recompiling only the template files that have changed.
仅对修改过的模板文件进行重新编译
You can make custom functions and custom variable modifiers, so the template language is extremely extensible.
可以编辑'自定义函数'和自定义'变量',因此这种模板语言完全可以扩展
Configurable template delimiter tag syntax, so you can use {}, {{}},
, etc.
可以自行设置模板定界符,所以你可以使用{}, {{}},
, 等等
The if/elseif/else/endif constructs are passed to the PHP parser, so the {if ...} expression syntax can be as simple or as complex as you like.
诸如 if/elseif/else/endif 语句可以被传递到php语法解析器,所以 {if ...} 表达式是简单的或者是复合的,随你喜欢啦
Unlimited nesting of sections, ifs, etc. allowed.
如果允许的话,section之间可以无限嵌套
It is possible to embed PHP code right in your template files, although this may not be needed (nor recommended) since the engine is so customizable.
引擎是可以定制的.可以内嵌php代码到你的模板文件中,虽然这可能并不需要(不推荐)
Built-in caching support
内建缓存支持
Arbitrary template sources
独立模板文件
Custom cache handling functions
可自定义缓存处理函数
Plugin architecture
插件体系结构
smarty 模板是怎么回事干什么用的?
,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目的就是要使PHP程序员同美工分离,使程序员改变程序的逻辑内容不会影响到美工的页面设计
,美工重新修改页面不会影响到程序的程序逻辑
,这在多人合作的项目中显的尤为重要。
Smarty优点 1. 速度:采用Smarty编写的程序可以获得最大速度的提高,这一点是相对于其它的模板引擎技术而言的。
2. 编译型:采用Smarty编写的程序在运行时要编译成一个非模板技术的PHP文件,这个文件采用了PHP与HTML混合的方式,在下一次访问模板时将WEB请求直接转换到这个文件中,而不再进行模板重新编译(在源程序没有改动的情况下)
3. 缓存技术:Smarty选用的一种缓存技术,它可以将用户最终看到的HTML文件缓存成一个静态的HTML页,当设定Smarty的cache属性为true时,在Smarty设定的cachetime期内将用户的WEB请求直接转换到这个静态的HTML文件中来,这相当于调用一个静态的HTML文件。
4. 插件技术:Smarty可以自定义插件。插件实际就是一些自定义的函数。
5. 模板中可以使用if/elseif/else/endif。在模板文件使用判断语句可以非常方便的对模板进行格式重排。
什么 是jquery,ajax,smarty,有什么区别和联系?
jquery可以看做是一个高效开发网页的工具,他既可以做前台,也可以配合其他组件实现后台的一些功能。
ajax即“Asynchronous JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术,这个技术需要包含很多的工具共同来实现,其中就可以使用到jquery。
因此,jquery是工具,而ajax是技术。明显ajax的层次更高,范畴更广。
至于Smarty,确实没有用过,也不想复制粘贴,就麻烦你自己百度了。
jquery就是javascipt的一个库,做页面特效用的
ajax就是为了不刷新和后台实时交互用的
smarty是为了分离html和php代码用的
jquery是客户端的,ajax是交互的,脚本程序 smarty ajax其实就是jquery,只不过是跟后台交互数据用的,你用的是php,提交跟给php脚本然后执行返回数据给ajax,smarty是php的一种存在服务器段的缓存,smarty技术是根据设置缓存的时间来更新页面,通过ajax可以提交给php脚本即时更新数据,也不用把整个页面重新载如进来,jquery就是存在客户端的ajax获取数据的客户端技术
求大神 解释smarty和thinkphp的区别
ThinkPHP是PHP框架
smarty是模板引擎
ThinkPHP可以用smarty做为模板引擎 也可以使用自带的
====ThinkPHP是mvc框架 主要用于后台语言开发
====Smarty是模板引擎 用于前台模板更改
ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式
Smarty是一个使用PHP写出来的模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目的就是要使PHP程序员同前端人员分离,使程序员改变程序的逻辑内容不会影响到前端人员的页面设计,前端人员重新修改页面不会影响到程序的程序逻辑,这在多人合作的项目中显的尤为重要。
简单介绍
smarty :
模板引擎
PHP程序需要前端HTML混编代码和后端PHP代码分离 VC模式
简化混编代码难度
Thinkphp:
快速、兼容、简单的轻量级国产开源PHP开发框架,使用面向对象的开发结构和MVC模式
框架中可以包含模板引擎,反之不能
smarty是前端化php语法,就是让php能向像写html一样些php,目的是为了方便前端人员能写php脚步,在我看来没这个必要了。
thinkphp是个比较完整的框架,其中也实现了类似smarty的前端化php语法糖。
====ThinkPHP是mvc框架 主要用于后台语言开发
====Smarty是模板引擎 用于前台模板更改
ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式
Smarty是一个使用PHP写出来的模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目的就是要使PHP程序员同前端人员分离,使程序员改变程序的逻辑内容不会影响到前端人员的页面设计,前端人员重新修改页面不会影响到程序的程序逻辑,这在多人合作的项目中显的尤为重要。
php smarty前后台模板路径的配置问题
$smarty=new smarty;
$smarty->template_dir=base_path.smarty_path."templates/";
$smarty->compile_dir=base_path.smarty_path."templates_c/";
$smarty->config_dir=base_path.smarty_path."configs/";
$smarty->cache_dir=base_path.smarty_path."cache/";
//定义定界符
$smarty->left_delimiter='<{';
$smarty->right_delimiter="}>";
$smarty2 = new smarty;
$smarty->template_dir=front_path.smarty_path."templates/";
$smarty->compile_dir=front_path.smarty_path."templates_c/";
$smarty->config_dir=front_path.smarty_path."configs/";
$smarty->cache_dir=front_path.smarty_path."cache/";
//定义定界符
$smarty->left_delimiter='<{';
$smarty->right_delimiter="}>";
不一定几套, 你想弄几套都行,你只要为你实例化的smarty对象做相应的设置就行啦。
$smarty=new
smarty;
$smarty->template_dir=base_path.smarty_path."templates/";
$smarty->compile_dir=base_path.smarty_path."templates_c/";
$smarty->config_dir=base_path.smarty_path."configs/";
$smarty->cache_dir=base_path.smarty_path."cache/";
//定义定界符
$smarty->left_delimiter='<{';
$smarty->right_delimiter="}>";
$smarty2
=
new
smarty;
$smarty->template_dir=front_path.smarty_path."templates/";
$smarty->compile_dir=front_path.smarty_path."templates_c/";
$smarty->config_dir=front_path.smarty_path."configs/";
$smarty->cache_dir=front_path.smarty_path."cache/";
//定义定界符
$smarty->left_delimiter='<{';
$smarty->right_delimiter="}>";
不一定几套,
你想弄几套都行,你只要为你实例化的smarty对象做相应的设置就行啦。
Smarty如何输出一个MYSQL查询得到的数组?
mysql_fetch_array这个只是求得一条记录的信息放到数组里.如果想查询所以记录记的用一个循环
另个输出就用$smarty->assign('变量',求得的数组变量);
在模板中可以使用
{foreach 数组变量 item=模板引用变量}
{模板引用变量.数组中的需要显示的字段名}
{/foreach}
mysql_fetch_array这个只是求得一条记录的信息放到数组里.如果想查询所以记录记的用一个循环
另个输出就用$smarty->assign('变量',求得的数组变量);
在模板中可以使用
{foreach 数组变量 item=模板引用变量}
{模板引用变量.数组中的需要显示的字段名}
{/foreach}
这样就可以了.如果还不清楚,可以找我
改为:
<!--?phprequire "core.php";
$sql = mysql_query("select * from bloginfo");
$maxblog =array();
while($row = mysql_fetch_assoc($sql))
{
$maxblog[]=$row;
}
$tpl->assign("maxblog", $maxblog);
$tpl->display("index.html");
?>
mysql_fetch_array这个只是求得一条记录的信息放到数组里.如果想查询所以记录记的用一个循环另个输出就用$smarty->assign('变量',求得的数组变量);在模板中可以使用{foreach 数组变量 item=模板引用变量} {模板引用变量.数组中的需要显示的字段名}{/foreach}
补充:Smarty是一个使用PHP写出来的模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目的就是要使PHP程序员同前端人员分离,使程序员改变程序的逻辑内容不会影响到前端人员的页面设计,前端人员重新修改页面不会影响到程序的程序逻辑,这在多人合作的项目中显的尤为重要。
php smarty 用的人还多吗
用的人还是多的,至少还没有比SMARTY更好的模板引擎。而且都用习惯了。
现在的框架都自带模板,迟早会被取代的。
Smarty中如何获取数组的长度
在很多资料上都看到,在Smarty中要求数组的长度时,可以用在数组后便加|count的方法调用。即通过{array|count}获得array的长度。但是今天在写模板时,发现这样得不到数组的长度,而只是得到一个返回的字符串Array。也就是说仅仅是返回了{array}的结果,而没有返回其array的长度。
查看smarty/plugins文件夹,发现并没有count的相关方法,也就是说,count是直接调用了php中的方法。
后来通过网络上的资料,发现可以在count前面加@,从而正确的获取数组的长度。再进一步查看Smarty的源码,发现Smarty对属性调节器后边的方法名进行处理时,会对前边加@的进行特殊处理。因此作出判断:
在Smarty中的属性调节器中调用php中定义好的函数时,可以通过加@来表示。
1、对类型为数组的方法进行测试时,发现不加@符号都会出错。比如:要对一个数组调用count方法求出数组的长度,就可以这样调用
{array|@count
},而要对数组调用end方法得出数组的最后一组数据时,则可以通过
{array|@end
}。
2、在对字符串的相关函数进行测试,发现加不加@都可以正常的调用。
3、其他的尚未认真测试。