学习 smarty

/* 学习 Smarty */
官网: http://www.smarty.net/
文档(含中文版的): http://www.smarty.net/documentation
   中文版: http://www.smarty.net/docs/zh_CN/

== 设计理念 ==
* 干净地分离显示逻辑和程序代码.
* 增强 php.
* 快速开发/部署
* 快速/简单的维护
* 语法简单易懂
* 灵活的自定义开发
* 安全
* 免费, 开源, 不断进步

== 分离的重要性 ==
1. 语法: 模板语法更符合 HTML 语义. smarty 使用简单的 {标签} 语法.
2. 松耦合: 分离页面和业务逻辑. 有安全特性.

== 实践很重要 ==
可以参考 Smarty 网站上最佳实践的文章.

== 工作原理? ==
'编译' 模板为 PHP 代码, 也有缓存.

== 模板继承 ==
出现继承之前, 模板分为多片, 可能会导致许多问题.
** 类似于面向对象的继承, 父模板提供可重载的区域(方法). **

== 整合 ==
Smarty 容易被整合到 MVC 中成为 View 层.


* 和其他的软件技术一样,Smarty也有着学习曲线。
* Smarty不一定保证良好的程序设计或者达成显示分离的目的,这还得需要
  开发者和模板设计师的努力。

== Chapter 1. Smarty 是什么? ==

通过分离模板/程序, 模板设计师/程序员 可以分离工作而不影响对方.
* 业务逻辑和显示逻辑分离,是Smarty的一个设计理念。
* 意味着限定了模板 仅 作为显示用的逻辑. 如: `包含` 其它模板,
  `交替` 表格行颜色, `循环` 遍历数组并 `显示` 出来.
 
  === 特性 ===
* 快速.
* 只编译一次.
* 聪明地 '重新编译'
* 非常具有可扩展性: 自己的 函数, 变量修饰器
* 可配置的
* 条件语句使用原生 php
* 无限层嵌套
* 缓存
* 模板继承
* `插件` 架构.

== Chapter 3. 基本语法 ==
默认定界符 { 和 } (可以配置改变)

* 注释: {* this is comment *}
  这是内部进行一些标记 而不被人看到的好方法.
在模板中使用 注释 是一个好习惯!
  ?可以直接输出 <select> ...
  {html_options options=$vals selected=$selected_id}
* 注释不能嵌套.

  === 变量 ===
{$foo}   --- 显示简单的变量
{$foo[4]}
{$foo.bar}     --- 等同于 php $foo['bar']
{$foo.$bar}    --- $foo[$bar]
{$foo->bar}    --- $foo->bar
{$foo->bar()}  --- $foo->bar()
{#foo#}        --- 变量配置文件相关
{$smarty.config.foo} 
{$foo[bar]}
{assign var=foo value='baz'}{$foo}  --- 见 {assign}

还可以合成, 数学运算, 嵌入, 嵌套下标.
{$x+$y}
{$foo={counter}+3}

实践: 最好的方式保持模板语法的简洁.

  === 函数 ===
语法: {funcname attr1="val1" attr="val2"}

内置函数, 自定义函数 语法相同.
自定义函数通过 插件 定义的, 如 {html_options}

  === 修饰器 ===
{$x|func:param...}

  === 内置函数 ===

 
== Chapter 17. 高级特性 模板继承 ==
从面向对象变成而来的概念. 可以让你定义一个或多个父模板, 提供
  给子模板来进行扩展. 扩展表示 子模板可以覆盖部分或全部模板的块区域.
 
子模板不能定义任何内容, 除了 {block} 以外的地方.
模板继承性能更高.
子模板使用 {extends} 标签.

也可以在 php 中调用时指定:
  $smarty->display('extends:layout.tpl|myproj.tpl|mypage.tpl');

 
  === {block} ===
属性 name, 如 {block name='sidebar'} 
子模板中可使用的可选属性:
  append, prepend, hide, nocache

parent.tpl:
  {block name="title"}Default ...{/block}
child.tpl:
  {extends file="parent.tpl"}
  {block name="title"}   -- 可选加 append,prepend 等属性
    Page Title
  {/block}

 

转载于:https://my.oschina.net/u/232554/blog/690041

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值