新金沙3777

【新金沙3777】正文实例陈述了php封装的smarty类,//暗中认可模板目录 if define

一月 12th, 2020  |  未分类

}?> default_index.php被含有在index.php,这样就足以健康突显了.
那样,HTML模板文件能够用dw来开展改正美化,美术职业人士应该会有帮忙一些.
template.php 代码:

  • NONE => no debugging control allowed
  • URL => enable debugging when SMARTY_DEBUG is found in the URL.

objdir=’tpp’; $tpl->rewrite=true;//开启rewrite 要求服务器扶植$tpl->rewrite_rule=array,array; //rewrite规则$tpl->assign(“indexurl”,”index.php”卡塔尔国; $tpl->assign;
$tpl->assign; $tpl->assign(“subhtml”,”{subtpl
ttt}那是用来引进四个模板文件的,那几个就是引入ttt.htm”卡塔尔国;
$tpl->assign(“a”,array(‘dasdasd’.’bbbbbbb’,’cccccccccccccc’State of Qatar卡塔尔;
$tpl->assign; $tpl->display; */ if define;//字符编码 if
define;//暗中同意模板目录 if define;//私下认可数据目录 if define;//默许运转格局class template { //note var public $rewrite=false;//是不是开启 伪静态
rewrite public $rewrite_rule=array(卡塔尔(قطر‎; //设置伪静态法则 public
$defaulttpldir;//私下认可的模版 public $tpldir;//模板目录 public
$objdir;//编写翻译缓存目录 public $tplfile;//模板文件 public
$objfile;//编写翻译文件 public $tplid=1;//模板编号 public
$currdir=’default’;//当前作风目录 public $vars=array(卡塔尔;//note 变量表
public $removeblanks=false;//移除空格 public
$stdout=’display’;//输出类型 function __construct {
$this->template; } function template { ob_start(); if(file_exists)
{ $this->currdir = $currdir; $this->tplid = $tplid; } else {
$this->currdir = ‘default’; $this->tplid = 1; }
$this->defaulttpldir = DIR_TPL.’/default’; $this->tpldir =
DIR_TPL.’/’.$this->currdir; $this->objdir =
DIR_DATA.’/cache/tpl’; if(version_compare == -1) {
register_shutdown_function(array); } } //note publlic function assign
{ $this->vars[$k] = $v; } //note publlic function display {
extract($this->vars, EXTR_SKIP); include $this->getObj; }
function getObj { $subdir = ($pos = strpos === false ? ” : substr;
$file = $subdir ? substr : $file; $this->tplfile = ($tpldir ? $tpldir
: $this->tpldir).’/’.($subdir ? $subdir.’/’ : ”).$file.’.htm’;
$this->objfile = $this->objdir.’/’.($tpldir ? ” :
$this->tplid.’_’).($subdir ? $subdir.’_’ : ”State of Qatar.$file.’.php’; //note
暗许目录 if(@filemtime === FALSE卡塔尔国 { $this->tplfile =
$this->defaulttpldir.’/’.($subdir ? $subdir.’/’ : ”State of Qatar.$file.’.htm’; }
//note 决断是不是正如过期 if(!file_exists || DEBUG && @filemtime <
filemtime { $this->compile(); } return $this->objfile; } function
getTpl { $subdir = ($pos = strpos === false ? ” : substr; $file =
$subdir ? substr : $file; $tplfile = $this->tpldir.’/’.($subdir ?
$subdir.’/’ : ”).$file.’.htm’; if === FALSE) { $tplfile =
$this->defaulttpldir.’/’.($subdir ? $subdir.’/’ : ”).$file.’.htm’; }
return $tplfile; } function compile() { $var_regexp =
“@?\$[a-zA-Z_]w*(?:[[w.”‘[]$]+])*”;
$vtag_regexp = “”; $const_regexp = “{}”; $template =
file_get_contents; for($i = 1; $i <= 3; $i++) { if(strpos !==
FALSE) { if { $template = str_replace(‘{subtpl ‘, ‘{tpl ‘, $template);
} else { $template =
preg_replace(“/[nrt]*{subtpls+}[nrt]*/ies”,
“file_get_contents)”, $template); } } } $remove = array/*.+?/is’,
‘///note.+?/i’, ‘///debug.+?/i’, ‘/+/’, ‘/;
$this->removeblanks && $template = preg_replace($remove, ”,
$template); $template = preg_replace}–>/s”, “{\1}”,
$template); $template = preg_replace}/”, “=\1?>”, $template);
$template = preg_replace}/”, “=\1?>”, $template); $template =
preg_replace$var_regexp/”, “=\0?>”, $template); $template =
preg_replace(“//ies”, “$this->arrayindex”, $template); $template
= preg_replace}}/ies”, “$this->stripvtag”, $template);
$template = preg_replace}/ies”, “$this->stripvtag”, $template);
$template =
preg_replace(“/[nrt]*{echos+}[nrt]*/ies”,
“$this->stripvtag”, $template); $template = preg_replace}/ies”,
“$this->stripvtag”, $template); $template = preg_replace}/ies”,
“$this->stripvtag { ?>’)”, $template); for { $template =
preg_replace(“/{loops+$vtag_regexps+$vtag_regexps+$vtag_regexp}{/loop}/ies”,
“$this->loopsection(‘\1’, ‘\2’, ‘\3’, ‘\4’)”,
$template); $template =
preg_replace(“/{loops+$vtag_regexps+$vtag_regexp}{/loop}/ies”,
“$this->loopsection(‘\1’, ”, ‘\2’, ‘\3’)”, $template); }
$template = preg_replace}/ies”, “$this->stripvtag”, $template);
$template = preg_replace}/is”, ” include $this->getObj;?>”,
$template); $template = preg_replace}/ise”, “$this->stripvtag(‘
include $this->getObj”, $template); $template =
preg_replace}/is”, ” include $this->getObj(“\1″,
$this->objdir);?>”, $template); $template =
preg_replace}/ise”, “$this->stripvtag(‘ include
$this->getObj(“\1″, $this->objdir); ?>’)”,
$template); $template = preg_replace(“/{else}/is”, ” } else {
?>”, $template); $template = preg_replace(“/{/if}/is”, ” }
?>”, $template); $template = preg_replace(“/{/for}/is”, ” }
?>”, $template); $template = preg_replace(“/$const_regexp/”,
“=\1?>”, $template卡塔尔;//note {else}
也切合常量格式,此处要小心先后顺序 $template = preg_replace(“/]/i”,
“\1’\2′]”, $template); $fp = fopen; fwrite; fclose; } function
arrayindex { $items = preg_replace]/is”, “[‘\1’]”, $items);
return “=$name$items?>”; } function stripvtag { $vtag_regexp = “”;
return preg_replace(“/$vtag_regexp/is”, “\1”, str_replace; }
function loopsection($arr, $k, $v, $statement) { $arr =
$this->stripvtag; $k = $this->stripvtag; $v = $this->stripvtag;
$statement = str_replace(“\””, ‘”‘, $statement); return $k ? ”
foreach$arr as $k => $v) {?>$statement}?>” : ” foreach
{?>$statement } ?>”; } function __destruct() { $content =
ob_get_contents(); //处理 rewrite if { $arr=$this->rewrite_rule;
$s=$arr[0]; $e=$arr[1]; $content=preg_replace; } ob_end_clean(卡塔尔;
echo $content; } } $tpl = new template; $tpl->objdir=’tpp’;
$tpl->rewrite=true;//开启rewrite 需求服务器帮助$tpl->rewrite_rule=array,array; //rewrite法规$tpl->assign(“indexurl”,”index.php”State of Qatar; $tpl->assign;
$tpl->assign; $tpl->assign(“subhtml”,”{subtpl
ttt}那是用来引入五个模板文件的,那个正是引入ttt.htm”卡塔尔(قطر‎;
$tpl->assign(“a”,array(‘dasdasd’.’bbbbbbb’,’cccccccccccccc’卡塔尔国State of Qatar;
$tpl->assign; $tpl->display; ?> 新建 tpl/default/index.html
复制代码 代码如下:

=$cat[‘forum_name’]?>

越多关于斯Matty相关内容感兴趣的读者可查阅本站专项论题:《smarty模板入门幼功教程》、《PHP模板手艺总计》、《PHP基于pdo操作数据库手艺总括》、《PHP运算与运算符用法总计》、《PHP互联网编制程序技能总括》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php字符串用法总括》、《php+mysql数据库操作入门教程》及《php数以万计数据库操作能力汇总》

无题目文书档案

$template,积存模板数据. var $template = ”; //模板路线. var $tpl_path =
”; //模板前缀. var $tpl_prefix = ”; //cache路径. var $cache_path =
”; //css文件路径. var $css_path = ”; //header文件路线. var
$header_path = ”; //footer文件路线 var $footer_path = ”; /** *
初叶化模板路线. */ function Template { //模板前缀.
$this->tpl_prefix = $root; //模板文件路线. $this->tpl_path =
‘./templates/’ . $root . ‘/’; //生成的PHP文件寄放路径.
$this->cache_path = ‘./template_data/’ .$this->tpl_prefix .
‘_’; return true; } /** *
chk_cache,检查”编写翻译”后的沙盘模拟经营是或不是必要改过,推断借助:最后修正时间,”编译”文件是还是不是存在.
*/ function chk_cache { $tpl_file = $this->tpl_path . $tpl_index
. ‘.html’; $cache_file = $this->cache_path . $tpl_index . ‘.php’;
//判定是或不是必要更新. if(!file_exists { return true; } elseif >
filemtime { return true; } } /** * 输出模板文件. */ function
parse_tpl($tpl_index,$message=”) { return $this->cache_path .
$tpl_index . ‘.php’; } /** * 加载模板文件. */ function load_tpl {
$tpl_file = $this->tpl_path . $tpl_index . ‘.html’; $fp = fopen;
$this->template = fread($fp, filesize; fclose; } /** *
替换变量,何况”编写翻译”模板. */ function write_cache { $cache_file =
$this->cache_path . $tpl_index . ‘.php’; //变量呈现.
$this->template = preg_replace/is”, “=\2?>”,
$this->template卡塔尔(قطر‎; //分界面语言替换. $this->template =
preg_replace}/ies”, “$lang[‘main’][‘\1’]”,
$this->template); $fp = fopen; flock; fwrite; fclose; } /** *
替换block. */ function assign_block { $this->template =
str_replace($search,$replace,$this->template); } } ?>

  • NONE => no debugging control allowed
  • URL => enable debugging when SMARTY_DEBUG is found in the URL.

1.字符串赋值 :
{$str}
2.数组赋值 :
{loop $a $v}{$v},{/loop} 或者
{loop $a $key $val }{$val},{/loop} 3.{$subhtml}
{subtpl ttt}
4.原本自身是{$indexurl } 现在自己被改成了index.php
5.自个儿还是可以 echo 出来吗
{echo $ec}
6.其实小编还是可以够加减乘除的 6*7*8 {echo 6*7*8;} 7.常用的就这一个了
还会有哪些不懂的
新建 tpl/default/ttt.html 新建 tpp目录 ok了

{=$forum[‘forum_name’]}

* * @var string */ public $debugging_ctrl = ‘NONE’; /** * Name of
debugging URL-param. * Only used when $debugging_ctrl is set to ‘URL’.
* The name of the URL-parameter that activates debugging. * * @var
type */ public $smarty_debug_id = ‘SMARTY_DEBUG’; /** * Path of
debug template. * * @var string */ public $debug_tpl = null; /**
* When set, smarty uses this value as error_reporting-level. * *
@var int */ public $error_reporting = null; /** * Internal flag for
getTags() * * @var boolean */ public $get_used_tags = false;
/**#@+ * config var settings */ /** * Controls whether variables
with the same name overwrite each other. * * @var boolean */ public
$config_overwrite = true; /** * Controls whether config values of
on/true/yes and off/false/no get converted to boolean. * * @var
boolean */ public $config_booleanize = true; /** * Controls whether
hidden config sections/vars are read from the file. * * @var boolean
*/ public $config_read_hidden = false; /**#@-*/ /**#@+ *
resource locking */ /** * locking concurrent compiles * * @var
boolean */ public $compile_locking = true; /** * Controls whether
cache resources should emply locking mechanism * * @var boolean */
public $cache_locking = false; /** * seconds to wait for acquiring a
lock before ignoring the write lock * * @var float */ public
$locking_timeout = 10; /**#@-*/ /** * global template functions
* * @var array */ public $template_functions = array(); /** *
resource type used if none given * Must be an valid key of
$registered_resources. * * @var string */ public
$default_resource_type = ‘file’; /** * caching type * Must be an
element of $cache_resource_types. * * @var string */ public
$caching_type = ‘file’; /** * internal config properties * * @var
array */ public $properties = array(); /** * config type * * @var
string */ public $default_config_type = ‘file’; /** * cached
template objects * * @var array */ public $template_objects =
array(); /** * check If-Modified-Since headers * * @var boolean */
public $cache_modified_check = false; /** * registered plugins *
* @var array */ public $registered_plugins = array(); /** * plugin
search order * * @var array */ public $plugin_search_order =
array(‘function’, ‘block’, ‘compiler’, ‘class’); /** * registered
objects * * @var array */ public $registered_objects = array();
/** * registered classes * * @var array */ public
$registered_classes = array(); /** * registered filters * * @var
array */ public $registered_filters = array(); /** * registered
resources * * @var array */ public $registered_resources = array();
/** * resource handler cache * * @var array */ public
$_resource_handlers = array(); /** * registered cache resources *
* @var array */ public $registered_cache_resources = array(); /**
* cache resource handler cache * * @var array */ public
$_cacheresource_handlers = array(); /** * autoload filter * *
@var array */ public $autoload_filters = array(); /** * default
modifier * * @var array */ public $default_modifiers = array();
/** * autoescape variable output * * @var boolean */ public
$escape_html = false; /** * global internal smarty vars * * @var
array */ public static $_smarty_vars = array(); /** * start time
for execution time calculation * * @var int */ public $start_time =
0; /** * default file permissions * * @var int */ public
$_file_perms = 0644; /** * default dir permissions * * @var int
*/ public $_dir_perms = 0771; /** * block tag hierarchy * * @var
array */ public $_tag_stack = array(); /** * self pointer to
Smarty object * * @var Smarty */ public $smarty; /** * required by
the compiler for BC * * @var string */ public $_current_file =
null; /** * internal flag to enable parser debugging * * @var bool
*/ public $_parserdebug = false; /** * Saved parameter of merged
templates during compilation * * @var array */ public
$merged_templates_func = array(); /**#@-*/ /** * Initialize new
Smarty object */ public function __construct() { // selfpointer
needed by some other class methods $this->smarty = $this; if
(is_callable(‘mb_internal_encoding’)) { mb_internal_encoding; }
$this->start_time = microtime; // set default dirs
$this->setTemplateDir(‘.’ . DS . ‘templates’ . DS)
->setCompileDir(‘.’ . DS . ‘templates_c’ . DS) ->setPluginsDir
->setCacheDir(‘.’ . DS . ‘cache’ . DS) ->setConfigDir(‘.’ . DS .
‘configs’ . DS); $this->debug_tpl = ‘file:’ . dirname .
‘/debug.tpl’; if (isset($_SERVER[‘SCRIPT_NAME’])) {
$this->assignGlobal(‘SCRIPT_NAME’, $_SERVER[‘SCRIPT_NAME’]); } }
/** * Class destructor */ public function __destruct() { //
intentionally left blank } /** * <> set selfpointer on cloned
object */ public function __clone() { $this->smarty = $this; }
/** * <> Generic getter. * Calls the appropriate getter
function. * Issues an E_USER_NOTICE if no valid getter is found. *
* @param string $name property name * * @return mixed */ public
function __get { $allowed = array( ‘template_dir’ =>
‘getTemplateDir’, ‘config_dir’ => ‘getConfigDir’, ‘plugins_dir’
=> ‘getPluginsDir’, ‘compile_dir’ => ‘getCompileDir’,
‘cache_dir’ => ‘getCacheDir’, ); if (isset { return
$this->{$allowed[$name]}(); } else { trigger_error(‘Undefined
property: ‘ . get_class . ‘::$’ . $name, E_USER_NOTICE); } } /** *
<> Generic setter. * Calls the appropriate setter function. *
Issues an E_USER_NOTICE if no valid setter is found. * * @param
string $name property name * @param mixed $value parameter passed to
setter */ public function __set { $allowed = array( ‘template_dir’
=> ‘setTemplateDir’, ‘config_dir’ => ‘setConfigDir’,
‘plugins_dir’ => ‘setPluginsDir’, ‘compile_dir’ =>
‘setCompileDir’, ‘cache_dir’ => ‘setCacheDir’, ); if (isset {
$this->{$allowed[$name]}; } else { trigger_error(‘Undefined
property: ‘ . get_class . ‘::$’ . $name, E_USER_NOTICE); } } /** *
Check if a template resource exists * * @param string $resource_name
template name * * @return boolean status */ public function
templateExists { // create template object $save =
$this->template_objects; $tpl = new
$this->template_class($resource_name, $this); // check if it does
exists $result = $tpl->source->exists; $this->template_objects
= $save; return $result; } /** * Returns a single or all global
variables * * @param string $varname variable name or null * *
@return string variable value or or array of variables */ public
function getGlobal { if { if
(isset(self::$global_tpl_vars[$varname])) { return
self::$global_tpl_vars[$varname]->value; } else { return ”; } }
else { $_result = array(); foreach (self::$global_tpl_vars AS $key
=> $var) { $_result[$key] = $var->value; } return $_result; }
} /** * Empty cache folder * * @param integer $exp_time expiration
time * @param string $type resource type * * @return integer number
of cache files deleted */ public function clearAllCache($exp_time =
null, $type = null) { // load cache resource and call clearAll
$_cache_resource = Smarty_CacheResource::load;
Smarty_CacheResource::invalidLoadedCache; return
$_cache_resource->clearAll; } /** * Empty cache for a specific
template * * @param string $template_name template name * @param
string $cache_id cache id * @param string $compile_id compile id *
@param integer $exp_time expiration time * @param string $type
resource type * * @return integer number of cache files deleted */
public function clearCache($template_name, $cache_id = null,
$compile_id = null, $exp_time = null, $type = null) { // load cache
resource and call clear $_cache_resource =
Smarty_CacheResource::load; Smarty_CacheResource::invalidLoadedCache;
return $_cache_resource->clear($this, $template_name, $cache_id,
$compile_id, $exp_time); } /** * Loads security class and enables
security * * @param string|Smarty_Security $security_class if a
string is used, it must be class-name * * @return Smarty current
Smarty instance for chaining * @throws SmartyException when an invalid
class name is provided */ public function
enableSecurity($security_class = null) { if ($security_class
instanceof Smarty_Security) { $this->security_policy =
$security_class; return $this; } elseif (is_object { throw new
SmartyException(“Class ‘” . get_class . “‘ must extend
Smarty_Security.”); } if ($security_class == null) { $security_class
= $this->security_class; } if (!class_exists { throw new
SmartyException(“Security class ‘$security_class’ is not defined”); }
elseif ($security_class !== ‘Smarty_Security’ &&
!is_subclass_of($security_class, ‘Smarty_Security’)) { throw new
SmartyException(“Class ‘$security_class’ must extend
Smarty_Security.”); } else { $this->security_policy = new
$security_class; } return $this; } /** * Disable security * *
@return Smarty current Smarty instance for chaining */ public function
disableSecurity() { $this->security_policy = null; return $this; }
/** * Set template directory * * @param string|array $template_dir
directory of template sources * * @return Smarty current Smarty
instance for chaining */ public function setTemplateDir {
$this->template_dir = array $template_dir as $k => $v) {
$this->template_dir[$k] = preg_replace{1,}#’, ‘$1$2′, rtrim .
DS; } $this->joined_template_dir = join(DIRECTORY_SEPARATOR,
$this->template_dir); return $this; } /** * Add template
directory * * @param string|array $template_dir directory of template
sources * @param string $key of the array element to assign the
template dir to * * @return Smarty current Smarty instance for
chaining * @throws SmartyException when the given template directory is
not valid */ public function addTemplateDir($template_dir, $key =
null) { // make sure we’re dealing with an array $this->template_dir
= $this->template_dir; if (is_array { foreach ($template_dir as $k
=> $v) { $v = preg_replace{1,}#’, ‘$1$2′, rtrim . DS; if { //
indexes are not merged but appended $this->template_dir[] = $v; }
else { // string indexes are overridden $this->template_dir[$k] =
$v; } } } else { $v = preg_replace{1,}#’, ‘$1$2′, rtrim) . DS; if { //
override directory at specified index $this->template_dir[$key] =
$v; } else { // append new directory $this->template_dir[] = $v; }
} $this->joined_template_dir = join(DIRECTORY_SEPARATOR,
$this->template_dir); return $this; } /** * Get template
directories * * @param mixed $index index of directory to get, null to
get all * * @return array|string list of template directories, or
directory of $index */ public function getTemplateDir { if { return
isset($this->template_dir[$index]) ?
$this->template_dir[$index] : null; } return
$this->template_dir; } /** * Set config directory * * @param
$config_dir * * @return Smarty current Smarty instance for chaining
*/ public function setConfigDir { $this->config_dir = array
$config_dir as $k => $v) { $this->config_dir[$k] =
preg_replace{1,}#’, ‘$1$2′, rtrim . DS; }
$this->joined_config_dir = join(DIRECTORY_SEPARATOR,
$this->config_dir); return $this; } /** * Add config directory *
* @param string|array $config_dir directory of config sources *
@param mixed $key key of the array element to assign the config dir to
* * @return Smarty current Smarty instance for chaining */ public
function addConfigDir($config_dir, $key = null) { // make sure we’re
dealing with an array $this->config_dir = $this->config_dir; if
) { foreach ($config_dir as $k => $v) { $v = preg_replace{1,}#’,
‘$1$2′, rtrim . DS; if { // indexes are not merged but appended
$this->config_dir[] = $v; } else { // string indexes are
overridden $this->config_dir[$k] = $v; } } } else { $v =
preg_replace{1,}#’, ‘$1$2′, rtrim . DS; if { // override directory at
specified index $this->config_dir[$key] = rtrim . DS; } else { //
append new directory $this->config_dir[] = rtrim . DS; } }
$this->joined_config_dir = join(DIRECTORY_SEPARATOR,
$this->config_dir); return $this; } /** * Get config directory *
* @param mixed $index index of directory to get, null to get all * *
@return array|string configuration directory */ public function
getConfigDir { if { return isset($this->config_dir[$index]) ?
$this->config_dir[$index] : null; } return $this->config_dir;
} /** * Set plugins directory * * @param string|array $plugins_dir
directory of plugins * * @return Smarty current Smarty instance for
chaining */ public function setPluginsDir { $this->plugins_dir =
array $plugins_dir as $k => $v) { $this->plugins_dir[$k] =
rtrim . DS; } return $this; } /** * Adds directory of plugin files *
* @param $plugins_dir * * @return Smarty current Smarty instance for
chaining */ public function addPluginsDir { // make sure we’re dealing
with an array $this->plugins_dir = $this->plugins_dir; if
(is_array { foreach ($plugins_dir as $k => $v) { if { // indexes
are not merged but appended $this->plugins_dir[] = rtrim . DS; }
else { // string indexes are overridden $this->plugins_dir[$k] =
rtrim . DS; } } } else { // append new directory
$this->plugins_dir[] = rtrim . DS; } $this->plugins_dir =
array_unique; return $this; } /** * Get plugin directories * *
@return array list of plugin directories */ public function
getPluginsDir $this->plugins_dir; } /** * Set compile directory
* * @param string $compile_dir directory to store compiled templates
in * * @return Smarty current Smarty instance for chaining */ public
function setCompileDir { $this->compile_dir = rtrim . DS; if
(!isset(Smarty::$_muted_directories[$this->compile_dir])) {
Smarty::$_muted_directories[$this->compile_dir] = null; } return
$this; } /** * Get compiled directory * * @return string path to
compiled templates */ public function getCompileDir() { return
$this->compile_dir; } /** * Set cache directory * * @param
string $cache_dir directory to store cached templates in * * @return
Smarty current Smarty instance for chaining */ public function
setCacheDir { $this->cache_dir = rtrim . DS; if
(!isset(Smarty::$_muted_directories[$this->cache_dir])) {
Smarty::$_muted_directories[$this->cache_dir] = null; } return
$this; } /** * Get cache directory * * @return string path of cache
directory */ public function getCacheDir() { return
$this->cache_dir; } /** * Set default modifiers * * @param
array|string $modifiers modifier or list of modifiers to set * *
@return Smarty current Smarty instance for chaining */ public function
setDefaultModifiers { $this->default_modifiers = $modifiers; return
$this; } /** * Add default modifiers * * @param array|string
$modifiers modifier or list of modifiers to add * * @return Smarty
current Smarty instance for chaining */ public function
addDefaultModifiers { if { $this->default_modifiers =
array_merge($this->default_modifiers, $modifiers); } else {
$this->default_modifiers[] = $modifiers; } return $this; } /**
* Get default modifiers * * @return array list of default modifiers
*/ public function getDefaultModifiers() { return
$this->default_modifiers; } /** * Set autoload filters * *
@param array $filters filters to load automatically * @param string
$type “pre”, “output”, … specify the filter type to set. Defaults to
none treating $filters’ keys as the appropriate types * * @return
Smarty current Smarty instance for chaining */ public function
setAutoloadFilters($filters, $type = null) { if {
$this->autoload_filters[$type] = $filters; } else {
$this->autoload_filters = $filters; } return $this; } /** * Add
autoload filters * * @param array $filters filters to load
automatically * @param string $type “pre”, “output”, … specify the
filter type to set. Defaults to none treating $filters’ keys as the
appropriate types * * @return Smarty current Smarty instance for
chaining */ public function addAutoloadFilters($filters, $type = null)
{ if { if (!empty($this->autoload_filters[$type])) {
$this->autoload_filters[$type] =
array_merge($this->autoload_filters[$type], ; } else {
$this->autoload_filters[$type] = $filters; } } else { foreach
$filters as $key => $value) { if
(!empty($this->autoload_filters[$key])) {
$this->autoload_filters[$key] =
array_merge($this->autoload_filters[$key], ; } else {
$this->autoload_filters[$key] = $value; } } } return $this; }
/** * Get autoload filters * * @param string $type type of filter
to get autoloads for. Defaults to all autoload filters * * @return
array array( ‘type1’ => array( ‘filter1’, ‘filter2’, … ) ) or array(
‘filter1’, ‘filter2’, …) if $type was specified */ public function
getAutoloadFilters { if { return
isset($this->autoload_filters[$type]) ?
$this->autoload_filters[$type] : array(); } return
$this->autoload_filters; } /** * return name of debugging
template * * @return string */ public function getDebugTemplate() {
return $this->debug_tpl; } /** * set the debug template * *
@param string $tpl_name * * @return Smarty current Smarty instance
for chaining * @throws SmartyException if file is not readable */
public function setDebugTemplate { if (!is_readable { throw new
SmartyException(“Unknown file ‘{$tpl_name}'”); } $this->debug_tpl =
$tpl_name; return $this; } /** * creates a template object * *
@param string $template the resource handle of the template file *
@param mixed $cache_id cache id to be used with this template * @param
mixed $compile_id compile id to be used with this template * @param
object $parent next higher level of Smarty variables * @param boolean
$do_clone flag is Smarty object shall be cloned * * @return object
template object */ public function createTemplate($template, $cache_id
= null, $compile_id = null, $parent = null, $do_clone = true) { if
($cache_id !== null && || is_array { $parent = $cache_id; $cache_id
= null; } if ($parent !== null && is_array { $data = $parent; $parent =
null; } else { $data = null; } // default to cache_id and compile_id
of Smarty object $cache_id = $cache_id === null ? $this->cache_id
: $cache_id; $compile_id = $compile_id === null ?
$this->compile_id : $compile_id; // already in template cache? if
($this->allow_ambiguous_resources) { $_templateId =
Smarty_Resource::getUniqueTemplateName . $cache_id . $compile_id; }
else { $_templateId = $this->joined_template_dir . ‘#’ .
$template . $cache_id . $compile_id; } if (isset { $_templateId =
sha1; } if { if (isset($this->template_objects[$_templateId])) {
// return cached template object $tpl = clone
$this->template_objects[$_templateId]; $tpl->smarty = clone
$tpl->smarty; $tpl->parent = $parent; $tpl->tpl_vars =
array(); $tpl->config_vars = array(); } else { $tpl = new
$this->template_class($template, clone $this, $parent, $cache_id,
$compile_id); } } else { if
(isset($this->template_objects[$_templateId])) { // return cached
template object $tpl = $this->template_objects[$_templateId];
$tpl->parent = $parent; $tpl->tpl_vars = array();
$tpl->config_vars = array(); } else { $tpl = new
$this->template_class($template, $this, $parent, $cache_id,
$compile_id); } } // fill data if present if && is_array { // set up
variable values foreach ($data as $_key => $_val) {
$tpl->tpl_vars[$_key] = new Smarty_variable; } } return $tpl; }
/** * Takes unknown classes and loads plugin files for them * class
name format: Smarty_PluginType_PluginName * plugin filename format:
plugintype.pluginname.php * * @param string $plugin_name class plugin
name to load * @param bool $check check if already loaded * * @throws
SmartyException * @return string |boolean filepath of loaded file or
false */ public function loadPlugin($plugin_name, $check = true) { //
if function or class exists, exit silently if ($check && (is_callable
|| class_exists) { return true; } // Plugin name is expected to be:
Smarty_[Type]_[Name] $_name_parts = explode; // class name must
have three parts to be valid plugin // count < 3 === !isset if
(!isset || strtolower !== ‘smarty’) { throw new SmartyException(“plugin
{$plugin_name} is not a valid name format”); } // if type is
“internal”, get plugin from sysplugins if (strtolower == ‘internal’) {
$file = SMARTY_SYSPLUGINS_DIR . strtolower . ‘.php’; if {
require_once; return $file; } else { return false; } } // plugin
filename is expected to be: [type].[name].php $_plugin_filename =
“{$_name_parts[1]}.{$_name_parts[2]}.php”;
$_stream_resolve_include_path =
function_exists(‘stream_resolve_include_path’); // loop through
plugin dirs and find the plugin foreach ($this->getPluginsDir {
$names = array( $_plugin_dir . $_plugin_filename, $_plugin_dir .
strtolower; foreach { if { require_once; return $file; } if
($this->use_include_path &&
!preg_match(‘/^([/\\]|[a-zA-Z]:[/\\])/’,
$_plugin_dir)) { // try PHP include_path if
($_stream_resolve_include_path) { $file =
stream_resolve_include_path; } else { $file =
Smarty_Internal_Get_Include_Path::getIncludePath; } if {
require_once; return $file; } } } } // no plugin loaded return false; }
/** * Compile all template files * * @param string $extension file
extension * @param bool $force_compile force all to recompile *
@param int $time_limit * @param int $max_errors * * @return integer
number of template files recompiled */ public function
compileAllTemplates($extension = ‘.tpl’, $force_compile = false,
$time_limit = 0, $max_errors = null) { return
Smarty_Internal_Utility::compileAllTemplates($extension,
$force_compile, $time_limit, $max_errors, $this); } /** * Compile
all config files * * @param string $extension file extension * @param
bool $force_compile force all to recompile * @param int $time_limit
* @param int $max_errors * * @return integer number of template
files recompiled */ public function compileAllConfig($extension =
‘.conf’, $force_compile = false, $time_limit = 0, $max_errors = null)
{ return Smarty_Internal_Utility::compileAllConfig($extension,
$force_compile, $time_limit, $max_errors, $this); } /** * Delete
compiled template file * * @param string $resource_name template name
* @param string $compile_id compile id * @param integer $exp_time
expiration time * * @return integer number of template files deleted
*新金沙3777 ,/ public function clearCompiledTemplate($resource_name = null,
$compile_id = null, $exp_time = null) { return
Smarty_Internal_Utility::clearCompiledTemplate($resource_name,
$compile_id, $exp_time, $this); } /** * Return array of
tag/attributes of all tags used by an template * * @param
Smarty_Internal_Template $template * * @return array of
tag/attributes */ public function getTags(Smarty_Internal_Template
$template) { return Smarty_Internal_Utility::getTags; } /** * Run
installation test * * @param array $errors Array to write errors into,
rather than outputting them * * @return boolean true if setup is fine,
false if something is wrong */ public function testInstall { return
Smarty_Internal_Utility::testInstall; } /** * Error Handler to mute
expected messages * * @link * *
@param integer $errno Error level * @param $errstr * @param $errfile
* @param $errline * @param $errcontext * * @return boolean */
public static function mutingErrorHandler($errno, $errstr, $errfile,
$errline, $errcontext) { $_is_muted_directory = false; // add the
SMARTY_DIR to the list of muted directories if
(!isset(Smarty::$_muted_directories[SMARTY_DIR])) { $smarty_dir =
realpath; if ($smarty_dir !== false) {
Smarty::$_muted_directories[SMARTY_DIR] = array( ‘file’ =>
$smarty_dir, ‘length’ => strlen; } } // walk the muted directories
and test against $errfile foreach (Smarty::$_muted_directories as $key
=> &$dir) { if { // resolve directory and length for speedy
comparisons $file = realpath; if { // this directory does not exist,
remove and skip it unset(Smarty::$_muted_directories[$key]);
continue; } $dir = array( ‘file’ => $file, ‘length’ => strlen; }
if (!strncmp($errfile, $dir[‘file’], $dir[‘length’])) {
$_is_muted_directory = true; break; } } // pass to next error handler
if this error did not occur inside SMARTY_DIR // or the error was
within smarty but masked to be ignored if (!$_is_muted_directory ||
($errno && $errno & error_reporting { if
(Smarty::$_previous_error_handler) { return
call_user_func(Smarty::$_previous_error_handler, $errno, $errstr,
$errfile, $errline, $errcontext); } else { return false; } } } /** *
Enable error handler to mute expected messages * * @return void */
public static function muteExpectedErrors() { /* error muting is done
because some people implemented custom error_handlers using
and for some reason did not
understand the following paragraph: It is important to remember that the
standard PHP error handler is completely bypassed for the error types
specified by error_types unless the callback function returns FALSE.
error_reporting() settings will have no effect and your error handler
will be called regardless – however you are still able to read the
current value of error_reporting and act appropriately. Of particular
note is that this value will be 0 if the statement that caused the error
was prepended by the @ error-control operator. Smarty deliberately uses
@filemtime and filemtime() in some places. Reasons include –
@filemtime() is almost twice as fast as using an additional
file_exists() – between file_exists a possible race condition is
opened, which does not exist using the simple @filemtime() approach. */
$error_handler = array(‘Smarty’, ‘mutingErrorHandler’); $previous =
set_error_handler; // avoid dead loops if ($previous !==
$error_handler) { Smarty::$_previous_error_handler = $previous; } }
/** * Disable error handler muting expected messages * * @return
void */ public static function unmuteExpectedErrors() {
restore_error_handler(); }}// Check if we’re running on
windowsSmarty::$_IS_WINDOWS = strtoupper === ‘WIN’;// let PCRE treat
strings as ISO-8859-1 if we’re not dealing with UTF-8if
(Smarty::$_CHARSET !== ‘UTF-8’) { Smarty::$_UTF8_MODIFIER = ”;}/**
* Smarty exception class * * @package Smarty */class SmartyException
extends Exception{ public static $escape = false; public function
__toString() { return ‘ –> Smarty: ‘ . (self::$escape ?
htmlentities : $this->message) . ‘ Smarty Compiler: ‘ .
$this->message . ‘ true, ‘smarty_config_compiled’ => true,
‘smarty_security’ => true, ‘smarty_cacheresource’ => true,
‘smarty_cacheresource_custom’ => true,
‘smarty_cacheresource_keyvaluestore’ => true, ‘smarty_resource’
=> true, ‘smarty_resource_custom’ => true,
‘smarty_resource_uncompiled’ => true,
‘smarty_resource_recompiled’ => true, ); if (!strncmp($_class,
‘smarty_internal_’, 16) || isset { include SMARTY_SYSPLUGINS_DIR .
$_class . ‘.php’; }}

复制代码 代码如下:

{=$cat[‘forum_name’]}

 * @author Uwe Tews * @author Rodney Rehm * @package Smarty * @version 3.1.19 *//** * define shorthand directory separator constant */if  { define('DS', DIRECTORY_SEPARATOR);}/** * set SMARTY_DIR to absolute path to Smarty library files. * Sets SMARTY_DIR only if user application has not already defined it. */if (!defined { define('SMARTY_DIR', dirname;}/** * set SMARTY_SYSPLUGINS_DIR to absolute path to Smarty internal plugins. * Sets SMARTY_SYSPLUGINS_DIR only if user application has not already defined it. */if (!defined('SMARTY_SYSPLUGINS_DIR')) { define('SMARTY_SYSPLUGINS_DIR', SMARTY_DIR . 'sysplugins' . DS);}if (!defined) { define('SMARTY_PLUGINS_DIR', SMARTY_DIR . 'plugins' . DS);}if (!defined { define('SMARTY_MBSTRING', function_exists;}if (!defined('SMARTY_RESOURCE_CHAR_SET')) { // UTF-8 can only be done properly when mbstring is available! /** * @deprecated in favor of Smarty::$_CHARSET */ define('SMARTY_RESOURCE_CHAR_SET', SMARTY_MBSTRING ? 'UTF-8' : 'ISO-8859-1');}if (!defined('SMARTY_RESOURCE_DATE_FORMAT')) { /** * @deprecated in favor of Smarty::$_DATE_FORMAT */ define('SMARTY_RESOURCE_DATE_FORMAT', '%b %e, %Y');}/** * register the class autoloader */if (!defined('SMARTY_SPL_AUTOLOAD')) { define('SMARTY_SPL_AUTOLOAD', 0);}if (SMARTY_SPL_AUTOLOAD && set_include_path . PATH_SEPARATOR . SMARTY_SYSPLUGINS_DIR) !== false) { $registeredAutoLoadFunctions = spl_autoload_functions(); if (!isset($registeredAutoLoadFunctions['spl_autoload'])) { spl_autoload_register(); }} else { spl_autoload_register;}/** * Load always needed external class files */include_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_data.php';include_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_templatebase.php';include_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_template.php';include_once SMARTY_SYSPLUGINS_DIR . 'smarty_resource.php';include_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_resource_file.php';include_once SMARTY_SYSPLUGINS_DIR . 'smarty_cacheresource.php';include_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_cacheresource_file.php';/** * This is the main Smarty class * * @package Smarty */class Smarty extends Smarty_Internal_TemplateBase{ /**#@+ * constant definitions */ /** * smarty version */ const SMARTY_VERSION = 'Smarty-3.1.19'; /** * define variable scopes */ const SCOPE_LOCAL = 0; const SCOPE_PARENT = 1; const SCOPE_ROOT = 2; const SCOPE_GLOBAL = 3; /** * define caching modes */ const CACHING_OFF = 0; const CACHING_LIFETIME_CURRENT = 1; const CACHING_LIFETIME_SAVED = 2; /** * define constant for clearing cache files be saved expiration datees */ const CLEAR_EXPIRED = - 1; /** * define compile check modes */ const COMPILECHECK_OFF = 0; const COMPILECHECK_ON = 1; const COMPILECHECK_CACHEMISS = 2; /** * modes for handling of "" tags in templates. */ const PHP_PASSTHRU = 0; //-> print tags as plain text const PHP_QUOTE = 1; //-> escape tags as entities const PHP_REMOVE = 2; //-> escape tags as entities const PHP_ALLOW = 3; //-> escape tags as entities /** * filter types */ const FILTER_POST = 'post'; const FILTER_PRE = 'pre'; const FILTER_OUTPUT = 'output'; const FILTER_VARIABLE = 'variable'; /** * plugin types */ const PLUGIN_FUNCTION = 'function'; const PLUGIN_BLOCK = 'block'; const PLUGIN_COMPILER = 'compiler'; const PLUGIN_MODIFIER = 'modifier'; const PLUGIN_MODIFIERCOMPILER = 'modifiercompiler'; /**#@-*/ /** * assigned global tpl vars */ public static $global_tpl_vars = array(); /** * error handler returned by set_error_hanlder() in Smarty::muteExpectedErrors() */ public static $_previous_error_handler = null; /** * contains directories outside of SMARTY_DIR that are to be muted by muteExpectedErrors() */ public static $_muted_directories = array(); /** * Flag denoting if Multibyte String functions are available */ public static $_MBSTRING = SMARTY_MBSTRING; /** * The character set to adhere to  */ public static $_CHARSET = SMARTY_RESOURCE_CHAR_SET; /** * The date format to be used internally *  and strftime */ public static $_DATE_FORMAT = SMARTY_RESOURCE_DATE_FORMAT; /** * Flag denoting if PCRE should run in UTF-8 mode */ public static $_UTF8_MODIFIER = 'u'; /** * Flag denoting if operating system is windows */ public static $_IS_WINDOWS = false; /**#@+ * variables */ /** * auto literal on delimiters with whitspace * * @var boolean */ public $auto_literal = true; /** * display error on not assigned variables * * @var boolean */ public $error_unassigned = false; /** * look up relative filepaths in include_path * * @var boolean */ public $use_include_path = false; /** * template directory * * @var array */ private $template_dir = array(); /** * joined template directory string used in cache keys * * @var string */ public $joined_template_dir = null; /** * joined config directory string used in cache keys * * @var string */ public $joined_config_dir = null; /** * default template handler * * @var callable */ public $default_template_handler_func = null; /** * default config handler * * @var callable */ public $default_config_handler_func = null; /** * default plugin handler * * @var callable */ public $default_plugin_handler_func = null; /** * compile directory * * @var string */ private $compile_dir = null; /** * plugins directory * * @var array */ private $plugins_dir = array(); /** * cache directory * * @var string */ private $cache_dir = null; /** * config directory * * @var array */ private $config_dir = array(); /** * force template compiling? * * @var boolean */ public $force_compile = false; /** * check template for modifications? * * @var boolean */ public $compile_check = true; /** * use sub dirs for compiled/cached files? * * @var boolean */ public $use_sub_dirs = false; /** * allow ambiguous resources (that are made unique by the resource handler) * * @var boolean */ public $allow_ambiguous_resources = false; /** * caching enabled * * @var boolean */ public $caching = false; /** * merge compiled includes * * @var boolean */ public $merge_compiled_includes = false; /** * template inheritance merge compiled includes * * @var boolean */ public $inheritance_merge_compiled_includes = true; /** * cache lifetime in seconds * * @var integer */ public $cache_lifetime = 3600; /** * force cache file creation * * @var boolean */ public $force_cache = false; /** * Set this if you want different sets of cache files for the same * templates. * * @var string */ public $cache_id = null; /** * Set this if you want different sets of compiled files for the same * templates. * * @var string */ public $compile_id = null; /** * template left-delimiter * * @var string */ public $left_delimiter = "{"; /** * template right-delimiter * * @var string */ public $right_delimiter = "}"; /**#@+ * security */ /** * class name * This should be instance of Smarty_Security. * * @var string * @see Smarty_Security */ public $security_class = 'Smarty_Security'; /** * implementation of security class * * @var Smarty_Security */ public $security_policy = null; /** * controls handling of PHP-blocks * * @var integer */ public $php_handling = self::PHP_PASSTHRU; /** * controls if the php template file resource is allowed * * @var bool */ public $allow_php_templates = false; /** * Should compiled-templates be prevented from being called directly? * {@internal * Currently used by Smarty_Internal_Template only. * }} * * @var boolean */ public $direct_access_security = true; /**#@-*/ /** * debug mode * Setting this to true enables the debug-console. * * @var boolean */ public $debugging = false; /** * This determines if debugging is enable-able from the browser. * 

} }?>

期待本文所述对我们基于smarty模板的PHP程序设计有所帮衬。

=$forum[‘forum_name’]?>

本文实例叙述了php封装的smarty类。分享给大家供大家参照他事他说加以调查,具体如下:

{block_forum}

* * @var string */ public $debugging_ctrl = ‘NONE’; /** * Name of
debugging URL-param. * Only used when $debugging_ctrl is set to ‘URL’.
* The name of the URL-parameter that activates debugging. * * @var
type */ public $smarty_debug_id = ‘SMARTY_DEBUG’; /** * Path of
debug template. * * @var string */ public $debug_tpl = null; /**
* When set, smarty uses this value as error_reporting-level. * *
@var int */ public $error_reporting = null; /** * Internal flag for
getTags() * * @var boolean */ public $get_used_tags = false;
/**#@+ * config var settings */ /** * Controls whether variables
with the same name overwrite each other. * * @var boolean */ public
$config_overwrite = true; /** * Controls whether config values of
on/true/yes and off/false/no get converted to boolean. * * @var
boolean */ public $config_booleanize = true; /** * Controls whether
hidden config sections/vars are read from the file. * * @var boolean
*/ public $config_read_hidden = false; /**#@-*/ /**#@+ *
resource locking */ /** * locking concurrent compiles * * @var
boolean */ public $compile_locking = true; /** * Controls whether
cache resources should emply locking mechanism * * @var boolean */
public $cache_locking = false; /** * seconds to wait for acquiring a
lock before ignoring the write lock * * @var float */ public
$locking_timeout = 10; /**#@-*/ /** * global template functions
* * @var array */ public $template_functions = array(); /** *
resource type used if none given * Must be an valid key of
$registered_resources. * * @var string */ public
$default_resource_type = ‘file’; /** * caching type * Must be an
element of $cache_resource_types. * * @var string */ public
$caching_type = ‘file’; /** * internal config properties * * @var
array */ public $properties = array(); /** * config type * * @var
string */ public $default_config_type = ‘file’; /** * cached
template objects * * @var array */ public $template_objects =
array(); /** * check If-Modified-Since headers * * @var boolean */
public $cache_modified_check = false; /** * registered plugins *
* @var array */ public $registered_plugins = array(); /** * plugin
search order * * @var array */ public $plugin_search_order =
array(‘function’, ‘block’, ‘compiler’, ‘class’); /** * registered
objects * * @var array */ public $registered_objects = array();
/** * registered classes * * @var array */ public
$registered_classes = array(); /** * registered filters * * @var
array */ public $registered_filters = array(); /** * registered
resources * * @var array */ public $registered_resources = array();
/** * resource handler cache * * @var array */ public
$_resource_handlers = array(); /** * registered cache resources *
* @var array */ public $registered_cache_resources = array(); /**
* cache resource handler cache * * @var array */ public
$_cacheresource_handlers = array(); /** * autoload filter * *
@var array */ public $autoload_filters = array(); /** * default
modifier * * @var array */ public $default_modifiers = array();
/** * autoescape variable output * * @var boolean */ public
$escape_html = false; /** * global internal smarty vars * * @var
array */ public static $_smarty_vars = array(); /** * start time
for execution time calculation * * @var int */ public $start_time =
0; /** * default file permissions * * @var int */ public
$_file_perms = 0644; /** * default dir permissions * * @var int
*/ public $_dir_perms = 0771; /** * block tag hierarchy * * @var
array */ public $_tag_stack = array(); /** * self pointer to
Smarty object * * @var Smarty */ public $smarty; /** * required by
the compiler for BC * * @var string */ public $_current_file =
null; /** * internal flag to enable parser debugging * * @var bool
*/ public $_parserdebug = false; /** * Saved parameter of merged
templates during compilation * * @var array */ public
$merged_templates_func = array(); /**#@-*/ /** * Initialize new
Smarty object */ public function __construct() { // selfpointer
needed by some other class methods $this->smarty = $this; if
(is_callable(‘mb_internal_encoding’)) { mb_internal_encoding; }
$this->start_time = microtime; // set default dirs
$this->setTemplateDir(‘.’ . DS . ‘templates’ . DS)
->setCompileDir(‘.’ . DS . ‘templates_c’ . DS) ->setPluginsDir
->setCacheDir(‘.’ . DS . ‘cache’ . DS) ->setConfigDir(‘.’ . DS .
‘configs’ . DS); $this->debug_tpl = ‘file:’ . dirname .
‘/debug.tpl’; if (isset($_SERVER[‘SCRIPT_NAME’])) {
$this->assignGlobal(‘SCRIPT_NAME’, $_SERVER[‘SCRIPT_NAME’]); } }
/** * Class destructor */ public function __destruct() { //
intentionally left blank } /** * <> set selfpointer on cloned
object */ public function __clone() { $this->smarty = $this; }
/** * <> Generic getter. * Calls the appropriate getter
function. * Issues an E_USER_NOTICE if no valid getter is found. *
* @param string $name property name * * @return mixed */ public
function __get { $allowed = array( ‘template_dir’ =>
‘getTemplateDir’, ‘config_dir’ => ‘getConfigDir’, ‘plugins_dir’
=> ‘getPluginsDir’, ‘compile_dir’ => ‘getCompileDir’,
‘cache_dir’ => ‘getCacheDir’, ); if (isset { return
$this->{$allowed[$name]}(); } else { trigger_error(‘Undefined
property: ‘ . get_class . ‘::$’ . $name, E_USER_NOTICE); } } /** *
<> Generic setter. * Calls the appropriate setter function. *
Issues an E_USER_NOTICE if no valid setter is found. * * @param
string $name property name * @param mixed $value parameter passed to
setter */ public function __set { $allowed = array( ‘template_dir’
=> ‘setTemplateDir’, ‘config_dir’ => ‘setConfigDir’,
‘plugins_dir’ => ‘setPluginsDir’, ‘compile_dir’ =>
‘setCompileDir’, ‘cache_dir’ => ‘setCacheDir’, ); if (isset {
$this->{$allowed[$name]十大正规网赌网址 ,}; } else { trigger_error(‘Undefined
property: ‘ . get_class . ‘::$’ . $name, E_USER_NOTICE); } } /** *
Check if a template resource exists * * @param string $resource_name
template name * * @return boolean status */ public function
templateExists { // create template object $save =
$this->template_objects; $tpl = new
$this->template_class($resource_name, $this); // check if it does
exists $result = $tpl->source->exists; $this->template_objects
= $save; return $result; } /** * Returns a single or all global
variables * * @param string $varname variable name or null * *
@return string variable value or or array of variables */ public
function getGlobal { if { if
(isset(self::$global_tpl_vars[$varname])) { return
self::$global_tpl_vars[$varname]->value; } else { return ”; } }
else { $_result = array(); foreach (self::$global_tpl_vars AS $key
=> $var) { $_result[$key] = $var->value; } return $_result; }
} /** * Empty cache folder * * @param integer $exp_time expiration
time * @param string $type resource type * * @return integer number
of cache files deleted */ public function clearAllCache($exp_time =
null, $type = null) { // load cache resource and call clearAll
$_cache_resource = Smarty_CacheResource::load;
Smarty_CacheResource::invalidLoadedCache; return
$_cache_resource->clearAll; } /** * Empty cache for a specific
template * * @param string $template_name template name * @param
string $cache_id cache id * @param string $compile_id compile id *
@param integer $exp_time expiration time * @param string $type
resource type * * @return integer number of cache files deleted */
public function clearCache($template_name, $cache_id = null,
$compile_id = null, $exp_time = null, $type = null) { // load cache
resource and call clear $_cache_resource =
Smarty_CacheResource::load; Smarty_CacheResource::invalidLoadedCache;
return $_cache_resource->clear($this, $template_name, $cache_id,
$compile_id, $exp_time); } /** * Loads security class and enables
security * * @param string|Smarty_Security $security_class if a
string is used, it must be class-name * * @return Smarty current
Smarty instance for chaining * @throws SmartyException when an invalid
class name is provided */ public function
enableSecurity($security_class = null) { if ($security_class
instanceof Smarty_Security) { $this->security_policy =
$security_class; return $this; } elseif (is_object { throw new
SmartyException(“Class ‘” . get_class . “‘ must extend
Smarty_Security.”); } if ($security_class == null) { $security_class
= $this->security_class; } if (!class_exists { throw new
SmartyException(“Security class ‘$security_class’ is not defined”); }
elseif ($security_class !== ‘Smarty_Security’ &&
!is_subclass_of($security_class, ‘Smarty_Security’)) { throw new
SmartyException(“Class ‘$security_class’ must extend
Smarty_Security.”); } else { $this->security_policy = new
$security_class; } return $this; } /** * Disable security * *
@return Smarty current Smarty instance for chaining */ public function
disableSecurity() { $this->security_policy = null; return $this; }
/** * Set template directory * * @param string|array $template_dir
directory of template sources * * @return Smarty current Smarty
instance for chaining */ public function setTemplateDir {
$this->template_dir = array $template_dir as $k => $v) {
$this->template_dir[$k] = preg_replace{1,}#’, ‘$1$2′, rtrim .
DS; } $this->joined_template_dir = join(DIRECTORY_SEPARATOR,
$this->template_dir); return $this; } /** * Add template
directory * * @param string|array $template_dir directory of template
sources * @param string $key of the array element to assign the
template dir to * * @return Smarty current Smarty instance for
chaining * @throws SmartyException when the given template directory is
not valid */ public function addTemplateDir($template_dir, $key =
null) { // make sure we’re dealing with an array $this->template_dir
= $this->template_dir; if (is_array { foreach ($template_dir as $k
=> $v) { $v = preg_replace{1,}#’, ‘$1$2′, rtrim . DS; if { //
indexes are not merged but appended $this->template_dir[] = $v; }
else { // string indexes are overridden $this->template_dir[$k] =
$v; } } } else { $v = preg_replace{1,}#’, ‘$1$2′, rtrim) . DS; if { //
override directory at specified index $this->template_dir[$key] =
$v; } else { // append new directory $this->template_dir[] = $v; }
} $this->joined_template_dir = join(DIRECTORY_SEPARATOR,
$this->template_dir); return $this; } /** * Get template
directories * * @param mixed $index index of directory to get, null to
get all * * @return array|string list of template directories, or
directory of $index */ public function getTemplateDir { if { return
isset($this->template_dir[$index]) ?
$this->template_dir[$index] : null; } return
$this->template_dir; } /** * Set config directory * * @param
$config_dir * * @return Smarty current Smarty instance for chaining
*/ public function setConfigDir { $this->config_dir = array
$config_dir as $k => $v) { $this->config_dir[$k] =
preg_replace{1,}#’, ‘$1$2′, rtrim . DS; }
$this->joined_config_dir = join(DIRECTORY_SEPARATOR,
$this->config_dir); return $this; } /** * Add config directory *
* @param string|array $config_dir directory of config sources *
@param mixed $key key of the array element to assign the config dir to
* * @return Smarty current Smarty instance for chaining */ public
function addConfigDir($config_dir, $key = null) { // make sure we’re
dealing with an array $this->config_dir = $this->config_dir; if
) { foreach ($config_dir as $k => $v) { $v = preg_replace{1,}#’,
‘$1$2′, rtrim . DS; if { // indexes are not merged but appended
$this->config_dir[] = $v; } else { // string indexes are
overridden $this->config_dir[$k] = $v; } } } else { $v =
preg_replace{1,}#’, ‘$1$2′, rtrim . DS; if { // override directory at
specified index $this->config_dir[$key] = rtrim . DS; } else { //
append new directory $this->config_dir[] = rtrim . DS; } }
$this->joined_config_dir = join(DIRECTORY_SEPARATOR,
$this->config_dir); return $this; } /** * Get config directory *
* @param mixed $index index of directory to get, null to get all * *
@return array|string configuration directory */ public function
getConfigDir { if { return isset($this->config_dir[$index]) ?
$this->config_dir[$index] : null; } return $this->config_dir;
} /** * Set plugins directory * * @param string|array $plugins_dir
directory of plugins * * @return Smarty current Smarty instance for
chaining */ public function setPluginsDir { $this->plugins_dir =
array $plugins_dir as $k => $v) { $this->plugins_dir[$k] =
rtrim . DS; } return $this; } /** * Adds directory of plugin files *
* @param $plugins_dir * * @return Smarty current Smarty instance for
chaining */ public function addPluginsDir { // make sure we’re dealing
with an array $this->plugins_dir = $this->plugins_dir; if
(is_array { foreach ($plugins_dir as $k => $v) { if { // indexes
are not merged but appended $this->plugins_dir[] = rtrim . DS; }
else { // string indexes are overridden $this->plugins_dir[$k] =
rtrim . DS; } } } else { // append new directory
$this->plugins_dir[] = rtrim . DS; } $this->plugins_dir =
array_unique; return $this; } /** * Get plugin directories * *
@return array list of plugin directories */ public function
getPluginsDir $this->plugins_dir; } /** * Set compile directory
* * @param string $compile_dir directory to store compiled templates
in * * @return Smarty current Smarty instance for chaining */ public
function setCompileDir { $this->compile_dir = rtrim . DS; if
(!isset(Smarty::$_muted_directories[$this->compile_dir])) {
Smarty::$_muted_directories[$this->compile_dir] = null; } return
$this; } /** * Get compiled directory * * @return string path to
compiled templates */ public function getCompileDir() { return
$this->compile_dir; } /** * Set cache directory * * @param
string $cache_dir directory to store cached templates in * * @return
Smarty current Smarty instance for chaining */ public function
setCacheDir { $this->cache_dir = rtrim . DS; if
(!isset(Smarty::$_muted_directories[$this->cache_dir])) {
Smarty::$_muted_directories[$this->cache_dir] = null; } return
$this; } /** * Get cache directory * * @return string path of cache
directory */ public function getCacheDir() { return
$this->cache_dir; } /** * Set default modifiers * * @param
array|string $modifiers modifier or list of modifiers to set * *
@return Smarty current Smarty instance for chaining */ public function
setDefaultModifiers { $this->default_modifiers = $modifiers; return
$this; } /** * Add default modifiers * * @param array|string
$modifiers modifier or list of modifiers to add * * @return Smarty
current Smarty instance for chaining */ public function
addDefaultModifiers { if { $this->default_modifiers =
array_merge($this->default_modifiers, $modifiers); } else {
$this->default_modifiers[] = $modifiers; } return $this; } /**
* Get default modifiers * * @return array list of default modifiers
*/ public function getDefaultModifiers() { return
$this->default_modifiers; } /** * Set autoload filters * *
@param array $filters filters to load automatically * @param string
$type “pre”, “output”, … specify the filter type to set. Defaults to
none treating $filters’ keys as the appropriate types * * @return
Smarty current Smarty instance for chaining */ public function
setAutoloadFilters($filters, $type = null) { if {
$this->autoload_filters[$type] = $filters; } else {
$this->autoload_filters = $filters; } return $this; } /** * Add
autoload filters * * @param array $filters filters to load
automatically * @param string $type “pre”, “output”, … specify the
filter type to set. Defaults to none treating $filters’ keys as the
appropriate types * * @return Smarty current Smarty instance for
chaining */ public function addAutoloadFilters($filters, $type = null)
{ if { if (!empty($this->autoload_filters[$type])) {
$this->autoload_filters[$type] =
array_merge($this->autoload_filters[$type], ; } else {
$this->autoload_filters[$type] = $filters; } } else { foreach
$filters as $key => $value) { if
(!empty($this->autoload_filters[$key])) {
$this->autoload_filters[$key] =
array_merge($this->autoload_filters[$key], ; } else {
$this->autoload_filters[$key] = $value; } } } return $this; }
/** * Get autoload filters * * @param string $type type of filter
to get autoloads for. Defaults to all autoload filters * * @return
array array( ‘type1’ => array( ‘filter1’, ‘filter2’, … ) ) or array(
‘filter1’, ‘filter2’, …) if $type was specified */ public function
getAutoloadFilters { if { return
isset($this->autoload_filters[$type]) ?
$this->autoload_filters[$type] : array(); } return
$this->autoload_filters; } /** * return name of debugging
template * * @return string */ public function getDebugTemplate() {
return $this->debug_tpl; } /** * set the debug template * *
@param string $tpl_name * * @return Smarty current Smarty instance
for chaining * @throws SmartyException if file is not readable */
public function setDebugTemplate { if (!is_readable { throw new
SmartyException(“Unknown file ‘{$tpl_name}'”); } $this->debug_tpl =
$tpl_name; return $this; } /** * creates a template object * *
@param string $template the resource handle of the template file *
@param mixed $cache_id cache id to be used with this template * @param
mixed $compile_id compile id to be used with this template * @param
object $parent next higher level of Smarty variables * @param boolean
$do_clone flag is Smarty object shall be cloned * * @return object
template object */ public function createTemplate($template, $cache_id
= null, $compile_id = null, $parent = null, $do_clone = true) { if
($cache_id !== null && || is_array { $parent = $cache_id; $cache_id
= null; } if ($parent !== null && is_array { $data = $parent; $parent =
null; } else { $data = null; } // default to cache_id and compile_id
of Smarty object $cache_id = $cache_id === null ? $this->cache_id
: $cache_id; $compile_id = $compile_id === null ?
$this->compile_id : $compile_id; // already in template cache? if
($this->allow_ambiguous_resources) { $_templateId =
Smarty_Resource::getUniqueTemplateName . $cache_id . $compile_id; }
else { $_templateId = $this->joined_template_dir . ‘#’ .
$template . $cache_id . $compile_id; } if (isset { $_templateId =
sha1; } if { if (isset($this->template_objects[$_templateId])) {
// return cached template object $tpl = clone
$this->template_objects[$_templateId]; $tpl->smarty = clone
$tpl->smarty; $tpl->parent = $parent; $tpl->tpl_vars =
array(); $tpl->config_vars = array(); } else { $tpl = new
$this->template_class($template, clone $this, $parent, $cache_id,
$compile_id); } } else { if
(isset($this->template_objects[$_templateId])) { // return cached
template object $tpl = $this->template_objects[$_templateId];
$tpl->parent = $parent; $tpl->tpl_vars = array();
$tpl->config_vars = array(); } else { $tpl = new
$this->template_class($template, $this, $parent, $cache_id,
$compile_id); } } // fill data if present if && is_array { // set up
variable values foreach ($data as $_key => $_val) {
$tpl->tpl_vars[$_key] = new Smarty_variable; } } return $tpl; }
/** * Takes unknown classes and loads plugin files for them * class
name format: Smarty_PluginType_PluginName * plugin filename format:
plugintype.pluginname.php * * @param string $plugin_name class plugin
name to load * @param bool $check check if already loaded * * @throws
SmartyException * @return string |boolean filepath of loaded file or
false */ public function loadPlugin($plugin_name, $check = true) { //
if function or class exists, exit silently if ($check && (is_callable
|| class_exists) { return true; } // Plugin name is expected to be:
Smarty_[Type]_[Name] $_name_parts = explode; // class name must
have three parts to be valid plugin // count < 3 === !isset if
(!isset || strtolower !== ‘smarty’) { throw new SmartyException(“plugin
{$plugin_name} is not a valid name format”); } // if type is
“internal”, get plugin from sysplugins if (strtolower == ‘internal’) {
$file = SMARTY_SYSPLUGINS_DIR . strtolower . ‘.php’; if {
require_once; return $file; } else { return false; } } // plugin
filename is expected to be: [type].[name].php $_plugin_filename =
“{$_name_parts[1]}.{$_name_parts[2]}.php”;
$_stream_resolve_include_path =
function_exists(‘stream_resolve_include_path’); // loop through
plugin dirs and find the plugin foreach ($this->getPluginsDir {
$names = array( $_plugin_dir . $_plugin_filename, $_plugin_dir .
strtolower; foreach { if { require_once; return $file; } if
($this->use_include_path &&
!preg_match(‘/^([/\\]|[a-zA-Z]:[/\\])/’,
$_plugin_dir)) { // try PHP include_path if
($_stream_resolve_include_path) { $file =
stream_resolve_include_path; } else { $file =
Smarty_Internal_Get_Include_Path::getIncludePath; } if {
require_once; return $file; } } } } // no plugin loaded return false; }
/** * Compile all template files * * @param string $extension file
extension * @param bool $force_compile force all to recompile *
@param int $time_limit * @param int $max_errors * * @return integer
number of template files recompiled */ public function
compileAllTemplates($extension = ‘.tpl’, $force_compile = false,
$time_limit = 0, $max_errors = null) { return
Smarty_Internal_Utility::compileAllTemplates($extension,
$force_compile, $time_limit, $max_errors, $this); } /** * Compile
all config files * * @param string $extension file extension * @param
bool $force_compile force all to recompile * @param int $time_limit
* @param int $max_errors * * @return integer number of template
files recompiled */ public function compileAllConfig($extension =
‘.conf’, $force_compile = false, $time_limit = 0, $max_errors = null)
{ return Smarty_Internal_Utility::compileAllConfig($extension,
$force_compile, $time_limit, $max_errors, $this); } /** * Delete
compiled template file * * @param string $resource_name template name
* @param string $compile_id compile id * @param integer $exp_time
expiration time * * @return integer number of template files deleted
*/ public function clearCompiledTemplate($resource_name = null,
$compile_id = null, $exp_time = null) { return
Smarty_Internal_Utility::clearCompiledTemplate($resource_name,
$compile_id, $exp_time, $this); } /** * Return array of
tag/attributes of all tags used by an template * * @param
Smarty_Internal_Template $template * * @return array of
tag/attributes */ public function getTags(Smarty_Internal_Template
$template) { return Smarty_Internal_Utility::getTags; } /** * Run
installation test * * @param array $errors Array to write errors into,
rather than outputting them * * @return boolean true if setup is fine,
false if something is wrong */ public function testInstall { return
Smarty_Internal_Utility::testInstall; } /** * Error Handler to mute
expected messages * * @link * *
@param integer $errno Error level * @param $errstr * @param $errfile
* @param $errline * @param $errcontext * * @return boolean */
public static function mutingErrorHandler($errno, $errstr, $errfile,
$errline, $errcontext) { $_is_muted_directory = false; // add the
SMARTY_DIR to the list of muted directories if
(!isset(Smarty::$_muted_directories[SMARTY_DIR])) { $smarty_dir =
realpath; if ($smarty_dir !== false) {
Smarty::$_muted_directories[SMARTY_DIR] = array( ‘file’ =>
$smarty_dir, ‘length’ => strlen; } } // walk the muted directories
and test against $errfile foreach (Smarty::$_muted_directories as $key
=> &$dir) { if { // resolve directory and length for speedy
comparisons $file = realpath; if { // this directory does not exist,
remove and skip it unset(Smarty::$_muted_directories[$key]);
continue; } $dir = array( ‘file’ => $file, ‘length’ => strlen; }
if (!strncmp($errfile, $dir[‘file’], $dir[‘length’])) {
$_is_muted_directory = true; break; } } // pass to next error handler
if this error did not occur inside SMARTY_DIR // or the error was
within smarty but masked to be ignored if (!$_is_muted_directory ||
($errno && $errno & error_reporting { if
(Smarty::$_previous_error_handler) { return
call_user_func(Smarty::$_previous_error_handler, $errno, $errstr,
$errfile, $errline, $errcontext); } else { return false; } } } /** *
Enable error handler to mute expected messages * * @return void */
public static function muteExpectedErrors() { /* error muting is done
because some people implemented custom error_handlers using
and for some reason did not
understand the following paragraph: It is important to remember that the
standard PHP error handler is completely bypassed for the error types
specified by error_types unless the callback function returns FALSE.
error_reporting() settings will have no effect and your error handler
will be called regardless – however you are still able to read the
current value of error_reporting and act appropriately. Of particular
note is that this value will be 0 if the statement that caused the error
was prepended by the @ error-control operator. Smarty deliberately uses
@filemtime and filemtime() in some places. Reasons include –
@filemtime() is almost twice as fast as using an additional
file_exists() – between file_exists a possible race condition is
opened, which does not exist using the simple @filemtime() approach. */
$error_handler = array(‘Smarty’, ‘mutingErrorHandler’); $previous =
set_error_handler; // avoid dead loops if ($previous !==
$error_handler) { Smarty::$_previous_error_handler = $previous; } }
/** * Disable error handler muting expected messages * * @return
void */ public static function unmuteExpectedErrors() {
restore_error_handler(); }}// Check if we’re running on
windowsSmarty::$_IS_WINDOWS = strtoupper === ‘WIN’;// let PCRE treat
strings as ISO-8859-1 if we’re not dealing with UTF-8if
(Smarty::$_CHARSET !== ‘UTF-8’) { Smarty::$_UTF8_MODIFIER = ”;}/**
* Smarty exception class * * @package Smarty */class SmartyException
extends Exception{ public static $escape = false; public function
__toString() { return ‘ –> Smarty: ‘ . (self::$escape ?
htmlentities : $this->message) . ‘ Smarty Compiler: ‘ .
$this->message . ‘ true, ‘smarty_config_compiled’ => true,
‘smarty_security’ => true, ‘smarty_cacheresource’ => true,
‘smarty_cacheresource_custom’ => true,
‘smarty_cacheresource_keyvaluestore’ => true, ‘smarty_resource’
=> true, ‘smarty_resource_custom’ => true,
‘smarty_resource_uncompiled’ => true,
‘smarty_resource_recompiled’ => true, ); if (!strncmp($_class,
‘smarty_internal_’, 16) || isset { include SMARTY_SYSPLUGINS_DIR .
$_class . ‘.php’; }} * @author Uwe Tews * @author Rodney Rehm *
@package Smarty * @version 3.1.19 *//** * define shorthand
directory separator constant */if { define(‘DS’,
DIRECTORY_SEPARATOR);}/** * set SMARTY_DIR to absolute path to
Smarty library files. * Sets SMARTY_DIR only if user application has
not already defined it. */if (!defined { define(‘SMARTY_DIR’,
dirname;}/** * set SMARTY_SYSPLUGINS_DIR to absolute path to Smarty
internal plugins. * Sets SMARTY_SYSPLUGINS_DIR only if user
application has not already defined it. */if
(!defined(‘SMARTY_SYSPLUGINS_DIR’)) {
define(‘SMARTY_SYSPLUGINS_DIR’, SMARTY_DIR . ‘sysplugins’ . DS);}if
(!defined) { define(‘SMARTY_PLUGINS_DIR’, SMARTY_DIR . ‘plugins’ .
DS);}if (!defined { define(‘SMARTY_MBSTRING’, function_exists;}if
(!defined(‘SMARTY_RESOURCE_CHAR_SET’)) { // UTF-8 can only be done
properly when mbstring is available! /** * @deprecated in favor of
Smarty::$_CHARSET */ define(‘SMARTY_RESOURCE_CHAR_SET’,
SMARTY_MBSTRING ? ‘UTF-8’ : ‘ISO-8859-1’);}if
(!defined(‘SMARTY_RESOURCE_DATE_FORMAT’)) { /** * @deprecated in
favor of Smarty::$_DATE_FORMAT */
define(‘SMARTY_RESOURCE_DATE_FORMAT’, ‘%b %e, %Y’);}/** * register
the class autoloader */if (!defined(‘SMARTY_SPL_AUTOLOAD’)) {
define(‘SMARTY_SPL_AUTOLOAD’, 0);}if (SMARTY_SPL_AUTOLOAD &&
set_include_path . PATH_SEPARATOR . SMARTY_SYSPLUGINS_DIR) !==
false) { $registeredAutoLoadFunctions = spl_autoload_functions(); if
(!isset($registeredAutoLoadFunctions[‘spl_autoload’])) {
spl_autoload_register(); }} else { spl_autoload_register;}/** *
Load always needed external class files */include_once
SMARTY_SYSPLUGINS_DIR . ‘smarty_internal_data.php’;include_once
SMARTY_SYSPLUGINS_DIR .
‘smarty_internal_templatebase.php’;include_once
SMARTY_SYSPLUGINS_DIR . ‘smarty_internal_template.php’;include_once
SMARTY_SYSPLUGINS_DIR . ‘smarty_resource.php’;include_once
SMARTY_SYSPLUGINS_DIR .
‘smarty_internal_resource_file.php’;include_once
SMARTY_SYSPLUGINS_DIR . ‘smarty_cacheresource.php’;include_once
SMARTY_SYSPLUGINS_DIR .
‘smarty_internal_cacheresource_file.php’;/** * This is the main
Smarty class * * @package Smarty */class Smarty extends
Smarty_Internal_TemplateBase{ /**#@+ * constant definitions */
/** * smarty version */ const SMARTY_VERSION = ‘Smarty-3.1.19’;
/** * define variable scopes */ const SCOPE_LOCAL = 0; const
SCOPE_PARENT = 1; const SCOPE_ROOT = 2; const SCOPE_GLOBAL = 3; /**
* define caching modes */ const CACHING_OFF = 0; const
CACHING_LIFETIME_CURRENT = 1; const CACHING_LIFETIME_SAVED = 2;
/** * define constant for clearing cache files be saved expiration
datees */ const CLEAR_EXPIRED = – 1; /** * define compile check
modes */ const COMPILECHECK_OFF = 0; const COMPILECHECK_ON = 1; const
COMPILECHECK_CACHEMISS = 2; /** * modes for handling of “” tags in
templates. */ const PHP_PASSTHRU = 0; //-> print tags as plain text
const PHP_QUOTE = 1; //-> escape tags as entities const PHP_REMOVE
= 2; //-> escape tags as entities const PHP_ALLOW = 3; //->
escape tags as entities /** * filter types */ const FILTER_POST =
‘post’; const FILTER_PRE = ‘pre’; const FILTER_OUTPUT = ‘output’;
const FILTER_VARIABLE = ‘variable’; /** * plugin types */ const
PLUGIN_FUNCTION = ‘function’; const PLUGIN_BLOCK = ‘block’; const
PLUGIN_COMPILER = ‘compiler’; const PLUGIN_MODIFIER = ‘modifier’;
const PLUGIN_MODIFIERCOMPILER = ‘modifiercompiler’; /**#@-*/ /**
* assigned global tpl vars */ public static $global_tpl_vars =
array(); /** * error handler returned by set_error_hanlder() in
Smarty::muteExpectedErrors() */ public static
$_previous_error_handler = null; /** * contains directories
outside of SMARTY_DIR that are to be muted by muteExpectedErrors() */
public static $_muted_directories = array(); /** * Flag denoting if
Multibyte String functions are available */ public static $_MBSTRING =
SMARTY_MBSTRING; /** * The character set to adhere to */ public
static $_CHARSET = SMARTY_RESOURCE_CHAR_SET; /** * The date
format to be used internally * and strftime */ public static
$_DATE_FORMAT = SMARTY_RESOURCE_DATE_FORMAT; /** * Flag denoting
if PCRE should run in UTF-8 mode */ public static $_UTF8_MODIFIER =
‘u’; /** * Flag denoting if operating system is windows */ public
static $_IS_WINDOWS = false; /**#@+ * variables */ /** * auto
literal on delimiters with whitspace * * @var boolean */ public
$auto_literal = true; /** * display error on not assigned variables
* * @var boolean */ public $error_unassigned = false; /** * look
up relative filepaths in include_path * * @var boolean */ public
$use_include_path = false; /** * template directory * * @var
array */ private $template_dir = array(); /** * joined template
directory string used in cache keys * * @var string */ public
$joined_template_dir = null; /** * joined config directory string
used in cache keys * * @var string */ public $joined_config_dir =
null; /** * default template handler * * @var callable */ public
$default_template_handler_func = null; /** * default config
handler * * @var callable */ public $default_config_handler_func =
null; /** * default plugin handler * * @var callable */ public
$default_plugin_handler_func = null; /** * compile directory * *
@var string */ private $compile_dir = null; /** * plugins directory
* * @var array */ private $plugins_dir = array(); /** * cache
directory * * @var string */ private $cache_dir = null; /** *
config directory * * @var array */ private $config_dir = array();
/** * force template compiling? * * @var boolean */ public
$force_compile = false; /** * check template for modifications? *
* @var boolean */ public $compile_check = true; /** * use sub dirs
for compiled/cached files? * * @var boolean */ public $use_sub_dirs
= false; /** * allow ambiguous resources (that are made unique by the
resource handler) * * @var boolean */ public
$allow_ambiguous_resources = false; /** * caching enabled * *
@var boolean */ public $caching = false; /** * merge compiled
includes * * @var boolean */ public $merge_compiled_includes =
false; /** * template inheritance merge compiled includes * * @var
boolean */ public $inheritance_merge_compiled_includes = true; /**
* cache lifetime in seconds * * @var integer */ public
$cache_lifetime = 3600; /** * force cache file creation * * @var
boolean */ public $force_cache = false; /** * Set this if you want
different sets of cache files for the same * templates. * * @var
string */ public $cache_id = null; /** * Set this if you want
different sets of compiled files for the same * templates. * * @var
string */ public $compile_id = null; /** * template left-delimiter
* * @var string */ public $left_delimiter = “{“; /** * template
right-delimiter * * @var string */ public $right_delimiter = “}”;
/**#@+ * security */ /** * class name * This should be instance
of Smarty_Security. * * @var string * @see Smarty_Security */
public $security_class = ‘Smarty_Security’; /** * implementation of
security class * * @var Smarty_Security */ public $security_policy
= null; /** * controls handling of PHP-blocks * * @var integer */
public $php_handling = self::PHP_PASSTHRU; /** * controls if the
php template file resource is allowed * * @var bool */ public
$allow_php_templates = false; /** * Should compiled-templates be
prevented from being called directly? * {@internal * Currently used by
Smarty_Internal_Template only. * }} * * @var boolean */ public
$direct_access_security = true; /**#@-*/ /** * debug mode *
Setting this to true enables the debug-console. * * @var boolean */
public $debugging = false; /** * This determines if debugging is
enable-able from the browser. *

{/block_forum}

{/block_cat}
经过处理,里面的{block_forum}{block_cat}标签被替换来PHP循环语句,用于显示数组种全部成分.
生成的PHP模板文件: 代码:

思路:
欲在进程和易用之间赢得壹个平衡点.于是行使了由html文件生成php文件的点子
也想在分别呈现逻辑和分手html代码之间平衡一下 举个例子八个论坛首页:
代码:‘1’,’forum_cat_id’=>’0′,’forum_name’=>’PHP学习’),
array(‘forum_id’=>’2′,’forum_cat_id’=>’0′,’forum_name’=>’MYSQL学习’)
); $forums = array(
array(‘forum_id’=>’3′,’forum_cat_id’=>’1’,’forum_name’=>’PHP高档教程’卡塔尔,
array(‘forum_id’=>’4′,’forum_cat_id’=>’1’,’forum_name’=>’PHP初级教程’卡塔尔,
array(‘forum_id’=>’5′,’forum_cat_id’=>’2’,’forum_name’=>’MYSQL相关资料’卡塔尔State of Qatar; if { if ($tpl->chk_cache//确诊是还是不是须要再行生产PHP模板文件. {
$tpl->load_tpl;//加载html模板文件. //替换PHP语句
$tpl->assign_block(“{block_cat}”,””);
$tpl->assign_block(“{/block_cat}”,”}?>”);
$tpl->assign_block(“{block_forum}”,””);
$tpl->assign_block(“{/block_forum}”,”}n}?>”卡塔尔;
//坐蓐PHP模板文件. $tpl->write_cache; } } //富含PHP模板文件.
include($tpl->parse_tpl; ?> 对应的html模板文件:
代码:{block_cat}

相关文章

Your Comments

近期评论

    分类目录

    • 没有分类目录

    功能


    网站地图xml地图