Smarty是一个PHP的模æ�¿å¼•擎。更明确æ�¥è¯´ï¼Œå®ƒå�¯ä»¥å¸®åЩ开å�‘者更好地 分离程åº�逻辑和页é�¢æ˜¾ç¤ºã€‚最好的例å�,是当程åº�员和模æ�¿è®¾è®¡å¸ˆæ˜¯ä¸�å�Œçš„两个角色的情况,而且 大部分时候都ä¸�是å�Œä¸€ä¸ªäººçš„æƒ…况。
举个例å�ï¼ŒçŽ°åœ¨ä½ è¦�制作一个页é�¢æ�¥æ˜¾ç¤ºæ–°é—»å†…容。
æ–‡ç« å†…æœ‰
$headline,$tagline,$authorå’Œ$bodyç‰å�„部分内容, 这些内容没有包括它们如何被显示的信æ�¯ã€‚ 程åº�å°†å®ƒä»¬ä¼ é€’ç»™Smarty。然å�Žï¼Œæ¨¡æ�¿è®¾è®¡å¸ˆç¼–辑模æ�¿ï¼Œä½¿ç”¨HTMLæ ‡ç¾å’Œ 模æ�¿æ ‡ç¾ï¼Œæ�¥å¯¹è¿™äº›å†…容进行排版显示, å¦‚è¡¨æ ¼ã€�DIVã€�背景颜色ã€�å—体大å°�ã€�æ ·å¼�表ã€�SVGç‰ç‰ã€‚
当有一天,程åº�员需è¦�改å�˜æ–‡ç« æ•°æ�®å†…容的获å�–æ–¹å¼�,也就是修改程åº�逻辑。 那么这个改å�˜ä¸�会影å“�到模æ�¿è®¾è®¡å¸ˆçš„å·¥ä½œï¼Œå†…å®¹è¿˜æ˜¯ä¼šä¼ é€’åˆ°æ¨¡æ�¿ã€‚
å�Œæ ·çš„,如果模æ�¿è®¾è®¡å¸ˆæƒ³è¦�完全é‡�新设计模æ�¿ï¼Œä¹Ÿå�¯ä»¥å�šåˆ°å®Œå…¨ä¸�需è¦�修改程åº�逻辑。
所以,程åº�员å�¯ä»¥æ”¹å�˜ç¨‹åº�逻辑,而ä¸�需è¦�调整模æ�¿é¡µé�¢ï¼› 模æ�¿è®¾è®¡å¸ˆä¹Ÿå�¯ä»¥ä¿®æ”¹æ¨¡æ�¿ï¼Œè€Œä¸�会打æ–程åº�逻辑。
业务逻辑和显示逻辑分离,是Smarty的一个设计�念。
è¿™æ„�味ç�€æ¨¡æ�¿å�¯ä»¥åŒ…å�«éƒ¨åˆ†ä»…作为显示用的逻辑代ç �。 这些显示逻辑如:包å�« 其他模æ�¿ï¼Œäº¤æ›¿è®¾ç½®è¡¨æ ¼æ¯�行的颜色, 把å�˜é‡�转为 大写嗿¯�, 循环é��历数组并 显示出æ�¥ã€‚
Smarty也ä¸�æ˜¯æ— è®ºå¦‚ä½•ä¹Ÿå¼ºåˆ¶åˆ†ç¦»ä¸šåŠ¡å’Œæ˜¾ç¤ºé€»è¾‘ã€‚æ¯•ç«ŸSmarty æ— æ³•çŸ¥é�“è°�是è°�,所以,会ä¸�会把业务逻辑放到模æ�¿ä¹Ÿæ˜¯çœ‹ä½ 怎么处ç�†ã€‚
å�Œæ—¶ï¼Œå¦‚æžœä½ å¸Œæœ›åœ¨ä½ çš„æ¨¡æ�¿é‡Œæ²¡æœ‰ä»»ä½•的逻辑代ç �ï¼Œä½ ä¹Ÿå�¯ä»¥ 把模æ�¿å†™æˆ�仅剩下文å—å’Œå�˜é‡�。
Smarty的一些特性:
�常快速。
比PHP内嵌到HTMLä¸çš„å�𿳕è¦�有效率的多。
æ— æ¨¡æ�¿è§£æž�的开销,å�ªç¼–译一次。
仅当模�文件被修改��会�明地�新编译。
ä½ å�¯ä»¥å¾ˆå®¹æ˜“创建自己的函数 å’Œ å�˜é‡�修饰器,é�žå¸¸å…·æœ‰å�¯æ‰©å±•性。
å�¯é…�置的模æ�¿å®šç•Œç¬¦è¯æ³•{delimiter}, ä½ å�¯ä»¥ä½¿ç”¨
{$foo},{{$foo}},<!--{$foo}-->ç‰ç‰ã€‚æ�¡ä»¶åˆ¤æ–è¯å�¥
{if}..{elseif}..{else}..{/if}会直接使用PHPè§£æž�,所以{if...}å�Žå�¯ä»¥æ˜¯ç®€å�•或者较å¤�æ�‚的表达å¼�。支æŒ�æ— é™�çš„
sections,ifç‰çš„åµŒå¥—ã€‚å†…ç½®ç¼“å˜æ”¯æŒ�。
任�的模��。
模�继承 �以轻�管�模�和内容。
�件 架构。
