美文网首页
Smarty - 简介 & 安装 & 创建项目

Smarty - 简介 & 安装 & 创建项目

作者: 廖马儿 | 来源:发表于2018-07-05 11:38 被阅读62次

    简介

    Smarty是一个php模板引擎。
    更准确的说,它分开了逻辑程序和外在的内容,提供了一种易于管理的方法。可以描述为应用程序员和美工扮演了不同的角色,因为在大多数情况下 ,他们不可能是同一个人。
    例如,你正在创建一个用于浏览新闻的网页,新闻标题,标签栏,作者和内容等都是内容要素,他们并不包含应该怎样去呈现。在Smarty的程序里,这些被忽略了。
    smarty不尝试将逻辑完全和模板分开。如果逻辑程序严格的用于页面表现,那么它在模板里不会出现问题。有个建议:让应用程序逻辑远离模板, 页面表现逻辑远离应用程序逻辑。这将在以后使内容更容易管理,程序更容易升级。

    业务逻辑和显示逻辑分离,是Smarty的一个设计理念。

    Smarty的特点之一是模板编译
    意思是Smarty读取模板文件然后用他们创建php脚本。这些脚本创建以后将被执行。因此并没有花费模板文件的语法解析,同时每个模板可以享受到诸如Zend加速器(http://www.zend.com) 或者PHP加速器(http://www.php-accelerator.co.uk)。这样的php编译器高速缓存解决方案。

    Smarty特点

    1.非常的快!
    2.用php分析器干这个苦差事是有效的
    3.不需要多余的模板语法解析,仅仅是编译一次
    4.仅对修改过的模板文件进行重新编译
    5.可以编辑'自定义函数'和自定义'变量',因此这种模板语言完全可以扩展
    6.可以自行设置模板定界符,所以你可以使用{}, {{}}, , 等等
    7.诸如 if/elseif/else/endif 语句可以被传递到php语法解析器,所以 {if ...} 表达式是简单的或者是复合的
    8.section之间可以无限嵌套
    9.引擎是可以定制的.可以内嵌php代码到你的模板文件中
    10.内建缓存支持
    11.独立模板文件
    12.可自定义缓存处理函数
    13.插件体系结构

    Smarty安装

    安装Smarty发行版在/libs/目录里的库文件(就是解压了).
    Smarty手册范例 2-1.Smarty库文件:

    Smarty.class.php
    Smarty_Compiler.class.php
    Config_File.class.php
    debug.tpl
    /core/*.php (all of them)
    /plugins/*.php (all of them)
    

    Smarty使用一个叫做'SMARTY_DIR'的php常量作为它的系统库目录
    基本上,如果你的应用程序可以找到 Smarty.class.php文件,你不需要设置SMARTY_DIR,Smarty将会自己运作。

    但是,如果 Smarty.class.php没有在你的include_path(php.ini里的一项设置)里,或者没有在你的应用程序里设置它的绝对路径的时候,你就必须手动配置SMARTY_DIR了(大多数程序都如此)SMARTY_DIR必须包含结尾斜杠。

    这里是你在你的php脚本里创建一个smarty的应用实例的例子:

    require('Smarty.class.php');
    $smarty = new Smarty;
    

    试着运行一下以上脚本,如果你发现"未找到Smarty.class.php 文件"的错误时,你应该这样做:

    Smarty手册范例 2-3.加入库文件目录的绝对路径:

    require('/usr/local/lib/php/Smarty/Smarty.class.php');
    $smarty = new Smarty;
    

    Smarty手册范例 2-4.在include_path加入库文件目录:

    // Edit your php.ini file, add the Smarty library
    // directory to the include_path and restart web server.
    // Then the following should work:
    require('Smarty.class.php');
    $smarty = new Smarty;
    

    Smarty手册范例 2-5.手工设置SMARTY_DIR常量:

    define('SMARTY_DIR','/usr/local/lib/php/Smarty/');
    require(SMARTY_DIR.'Smarty.class.php');
    $smarty = new Smarty;
    

    现在库文件已经搞定,该是设置为你的应用程序配置其他有关Smarty的目录的时候了。
    Smarty要求4个目录,默认下命名为:tempalates, templates_c, configs and cache
    每个都是可以自定义的,可以修改Smarty类属性: $template_dir, $compile_dir, $config_dir, and $cache_dir respectively。强烈推荐你为每个用到smarty的应用程序设置单一的目录!

    确定你已经知道了你的web服务器文件根目录。
    在我们的例子里,文件根目录是:"/web/www.mydomain.com/docs/"Smarty的4个目录 只可以被那些库文件访问,不可以被网络上的浏览器访问的目录。因此为避免任何安全问题,要求将那4个目录和网页文件目录(就是浏览器看的)分开来。

    在我们的安装例子里,我们将为一个留言板程序配置smarty环境。我们挑选应用程序只为了实现目录命名约定。你可以对任何程序使用相同的环境,只要将"guestbook"改成你要的名字就可以了。我们将把Smarty目录放在 "/web/www.mydomain.com/smarty/guestbook/"下。

    在你的文档目录下至少得有一个文件,这个文件可以被浏览器访问.我们叫它 "index.php"好了.把它放到"/guestbook/"目录下。

    现在我们看看这些文件结构:

    Smarty手册范例 2-6.例子的文件结构:

    /usr/local/lib/php/Smarty/Smarty.class.php
    /usr/local/lib/php/Smarty/Smarty_Compiler.class.php
    /usr/local/lib/php/Smarty/Config_File.class.php
    /usr/local/lib/php/Smarty/debug.tpl
    /usr/local/lib/php/Smarty/core/*.php
    /usr/local/lib/php/Smarty/plugins/*.php
    
    /web/www.mydomain.com/smarty/guestbook/templates/
    /web/www.mydomain.com/smarty/guestbook/templates_c/
    /web/www.mydomain.com/smarty/guestbook/configs/
    /web/www.mydomain.com/smarty/guestbook/cache/
    
    /web/www.mydomain.com/docs/guestbook/index.php
    

    Smarty的 compile_dir 和cache_dir必须可写。通常是user "nobody" 和 group "nobody"。如果是 OSX用户,默认为user "web" 和 group "web"。如果你在使用Apache,你可以看看httpd.conf 文件 (通常在"/usr/local/apache/conf/"目录下)哪些user和group正在被使用。

    Smarty手册范例 2-7 文件权限设置:

    chown nobody:nobody /web/www.mydomain.com/smarty/guestbook/templates_c/
    chmod 770 /web/www.mydomain.com/smarty/guestbook/templates_c/
    
    chown nobody:nobody /web/www.mydomain.com/smarty/guestbook/cache/
    chmod 770 /web/www.mydomain.com/smarty/guestbook/cache/
    

    技术提示:
    chmod 770相当安全了,它只让user "nobody" 和 group "nobody" 读/写 访问。如果你要对任何人开放读取访问权限(大多是为了你自己查看文件),你可以使用 775。

    我们需要创建index.tpl文件让smarty载入.这个文件放在 $template_dir目录里。


    基础安装

    在Smarty发行包中,目录/libs/ 里面的文件就是Smarty的库文件。 库文件都是.php文件,开发者不应该编辑它们。
    库文件可以多个应用程序共用,而且只在升级新版本的Smarty时进行覆盖。

    我们下载smarty包,然后解压到/usr/local/lib形成/usr/local/lib/smarty-3.1.32,就算安装好了。

    在上面的例子中, 文档根目录是/web/www.example.com/guestbook/htdocs/。 Smarty目录仅可以通过Smarty库文件访问,而不能直接被浏览器访问。 这样可以避免一些安全问题,强烈建议(但不强制)把这些目录 放到WEB服务器文档根目录之外。

    将会有至少一个文件是放到文档根目录的,这个文件也会被浏览器访问到。 我们将这文件命名为index.php, 放置到文档根目录/htdocs/中。

    基本配置

    Smarty需要一些对目录的 读写权限 (windows用户请忽略),包括 $compile_dir$cache_dir 目录 (templates_c/cache/), 所以,要确保web服务器用户有权限读写它们。

    通常是用户“nobody” 和组“nobody”. OS X用户,默认用户是“www”和组“www”. 如果你使用Apache,你可以看看你的httpd.conf 来确定是使用什么用户和组的。

    Example 2.7. 设置目录的读写权限:

    chown nobody:nobody /web/www.example.com/guestbook/templates_c/
    chmod 770 /web/www.example.com/guestbook/templates_c/
    
    chown nobody:nobody /web/www.example.com/guestbook/cache/
    chmod 770 /web/www.example.com/guestbook/cache/
    

    相关文章

      网友评论

          本文标题:Smarty - 简介 & 安装 & 创建项目

          本文链接:https://www.haomeiwen.com/subject/pewuuftx.html