摘要:还有安全特性,可以令模板源码有强制的约束。并且业务逻辑和显示逻辑分离,是的一个设计理念。是一个模板引擎,在应用程序中,当作层视图层的组件来使用。不一定保证良好的程序设计或者达成显示分离的目的,这还得需要开发者和模板设计师的努力。
一、 Smarty的由来
Smarty的主要设计理念是:干净的分离显示逻辑和程序代码,在PHP为后端情况下,Smarty模板应用在前端,增强PHP的前后端交互性能,并且给前后端分离情况下程序员的开发、部署带来方便,语法简单易懂,即使不懂PHP也完全可以掌握Smarty。
有人会说,为什么不直接用PHP进行前台渲染?
PHP与模板分离的重要性
语法:模板语法通常是更符合HTML标记的语义。PHP语法可以在程序代码中运作的很好, 但如何混合在HTML中就不然。Smarty简单的{标签}语法是为了表达显示逻辑而设计的。 Smarty让你的模板更专注于页面显示,而不用关注太多“代码”。 这可以让模板开发得更快速,维护更容易。 学习Smarty的语法不需要懂得PHP的相关知识,程序员或非程序员都能很快上手。
松耦合:当PHP代码混合在模板中,那将无法约束任意的逻辑代码被写到模板上。 Smarty分隔了模板和PHP,控制了页面显示和业务逻辑的分离。 Smarty还有安全特性,可以令模板源码有强制的约束。
页面设计者和PHP
一个通常的问题是:“页面设计者既然要学一门语法,为什么不学PHP?”。当然页面设计者可以 学习PHP,而且他们可能已经非常熟悉PHP。问题并非是他们是否有能力学习PHP,问题在于HTML混合PHP的情况,如果设计者使用PHP,那么就很容易会将一些不属于模板的PHP代码写到模板上。 (正如当他们只需要一把小刀但你塞给他们一把瑞士军刀一样)。 你可以教导他们程序设计的规则,但这可能是他们不真正需要学习的事情(他们不是开发者)。 而且PHP手册也是非常繁多难以筛选出你需要的部分进行教导, 就像你给了车子的买主一本汽车工厂里面的装配手册,而不是汽车的操作手册一样。 Smarty恰到好处地给予了设计者需要的工具,而提供了开发者更好地控制这些工具的方法。 这种简单的标签语法也是非常受到设计者的欢迎,帮助了设计者流水式地组织管理模板。
二、Smarty是什么一句话概括:Smarty是一个PHP的模板引擎
更准确的说:Smarty可以更好的帮助开发者分离程序逻辑和页面显示,如在前后端分离的项目中,前后端为不同开发人员,那么Smarty便可以做到在互相不影响的情况下完美的实现前后台的协作。并且业务逻辑和显示逻辑分离,是Smarty的一个设计理念。二、Smart的一些特性
非常快速。
比PHP内嵌到HTML中的做法要有效率的多。
比PHP内嵌到HTML中的做法要有效率的多。
无模板解析的开销,只编译一次。
仅当模板文件被修改后才会聪明地重新编译。
你可以很容易创建自己的函数和变量修饰器,非常具有可扩展性。
可配置的模板定界符语法{delimiter}, 你可以使用{$foo}, {{$foo}}, 等等。
条件判断语句 {if}..{elseif}..{else}..{/if} 会直接使用PHP解析,所以{if...}后可以是简单或者较复杂的表达式。
支持无限的 sections, if等的嵌套。
内置缓存支持。
任意的模板源。
模板继承 可以轻松管理模板和内容。
三、Smarty是怎么工作的?在底层,Smarty“编译”(简单地复制和转换)模板为PHP代码。这在每个模板第一次调用时发生,然后编译后的代码将被一直使用。Smarty处理地非常的好,所以模板设计师仅编辑模板而不需要关注编译的事情。这方法保持了模板的易维护,同时也保证了运行时是PHP代码的方式运行,这样PHP代码就可以通过类似APC等OP-CODE缓存器来加速了。
四、Smarty不是什么Smarty不是一个应用开发框架。Smarty不是一个MVC。Smarty不像Zend Framework, CodeIgniter, PHPCake, 或者其他的PHP应用开发框架。
Smarty是一个模板引擎,在应用程序中,当作V层(视图层)的组件来使用。 Smarty可以很轻易连接到其他的视图引擎中。 和其他的软件技术一样,Smarty也有着学习曲线。 Smarty不一定保证良好的程序设计或者达成显示分离的目的,这还得需要开发者和模板设计师的努力。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/89785.html
摘要:还有安全特性,可以令模板源码有强制的约束。并且业务逻辑和显示逻辑分离,是的一个设计理念。是一个模板引擎,在应用程序中,当作层视图层的组件来使用。不一定保证良好的程序设计或者达成显示分离的目的,这还得需要开发者和模板设计师的努力。 一、 Smarty的由来 Smarty的主要设计理念是:干净的分离显示逻辑和程序代码,在PHP为后端情况下,Smarty模板应用在前端,增强PHP的前后端交互...
摘要:体现了业务与显示的分离,尽量分离。就负责判断条件,并取出数据来。显示的工作尽量靠前页面缓存缓存,重要概念。减轻了数据库的压力。控制局部不缓存在标签中控制,该标签不缓存。模板调用特殊方法使用对象注册的方式来解决。文件命名函数名定 模板 数据与表现层的标签分离 smarty是PHP 与 HTML代码的分离 小型模板类 $smarty 的工作流程: 把需要显示的全局变量,赋值塞到对象内部的...
摘要:一概念变量修饰器调节器可用于变量,自定义函数和字符串。请使用符号和修饰器名称应用修饰器。变量修饰器由赋予的参数值决定其行为。与之相反将变量值转成大写字母所有字母,无参数。它与修饰器的效果刚好相反。它们会按复合的顺序来作用于变量,从左到右。 一、概念 变量修饰器(调节器)可用于变量,自定义函数和字符串。 请使用‘|’符号和修饰器名称应用修饰器。 变量修饰器由赋予的参数值决定其行为。 参数...
摘要:最近工作中用到模板引擎,整理了一些用到的模板函数。模板中获取服务端的值参数名模板中获取服务端的值参数名模板中获取服务端的值可以获取或的值。 最近工作中用到 Smarty 模板引擎,整理了一些用到的模板函数。 假设 smarty 的定界符为 {}。 模板中获取服务端 $_GET 的值: {$smarty.get.参数名} 模板中获取服务端 $_POST 的值: {$smarty.post...
摘要:命名空间的作用解决重名问题。不同的命名空间中,可以存在相同类名和函数名。完全限定名称,或包含了全局前缀操作符的名称,例如,或。源码分享书签从零开始打造自己的框架使用命名空间基础使用命名空间后备全局函数常量基础安装进阶安装 目标 本篇,我们来实现加载控制器、数据查询和页面渲染。 原文地址:http://www.voidking.com/2017/... 加载控制器 控制器 在app目录下...
阅读 2483·2021-09-02 15:40
阅读 1544·2019-08-30 15:54
阅读 1063·2019-08-30 12:48
阅读 3357·2019-08-29 17:23
阅读 1032·2019-08-28 18:04
阅读 3635·2019-08-26 13:54
阅读 586·2019-08-26 11:40
阅读 2374·2019-08-26 10:15