侯体宗的博客
  • 首页
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

php封装的smarty类完整实例

php  /  管理员 发布于 7年前   184

本文实例讲述了php封装的smarty类。分享给大家供大家参考,具体如下:

 * @author  Uwe Tews * @author  Rodney Rehm * @package  Smarty * @version  3.1.19 *//** * define shorthand directory separator constant */if (!defined('DS')) {  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('SMARTY_DIR')) {  define('SMARTY_DIR', dirname(__FILE__) . DS);}/** * 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('SMARTY_PLUGINS_DIR')) {  define('SMARTY_PLUGINS_DIR', SMARTY_DIR . 'plugins' . DS);}if (!defined('SMARTY_MBSTRING')) {  define('SMARTY_MBSTRING', function_exists('mb_split'));}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(get_include_path() . PATH_SEPARATOR . SMARTY_SYSPLUGINS_DIR) !== false) {  $registeredAutoLoadFunctions = spl_autoload_functions();  if (!isset($registeredAutoLoadFunctions['spl_autoload'])) {    spl_autoload_register();  }} else {  spl_autoload_register('smartyAutoload');}/** * 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 (e.g. "UTF-8")   */  public static $_CHARSET = SMARTY_RESOURCE_CHAR_SET;  /**   * The date format to be used internally   * (accepts date() 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.   * 
    *
  • NONE => no debugging control allowed
  • *
  • URL => enable debugging when SMARTY_DEBUG is found in the URL.
  • *
* * @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(Smarty::$_CHARSET); } $this->start_time = microtime(true); // set default dirs $this->setTemplateDir('.' . DS . 'templates' . DS) ->setCompileDir('.' . DS . 'templates_c' . DS) ->setPluginsDir(SMARTY_PLUGINS_DIR) ->setCacheDir('.' . DS . 'cache' . DS) ->setConfigDir('.' . DS . 'configs' . DS); $this->debug_tpl = 'file:' . dirname(__FILE__) . '/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($name) { $allowed = array( 'template_dir' => 'getTemplateDir', 'config_dir' => 'getConfigDir', 'plugins_dir' => 'getPluginsDir', 'compile_dir' => 'getCompileDir', 'cache_dir' => 'getCacheDir', ); if (isset($allowed[$name])) { return $this->{$allowed[$name]}(); } else { trigger_error('Undefined property: ' . get_class($this) . '::$' . $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($name, $value) { $allowed = array( 'template_dir' => 'setTemplateDir', 'config_dir' => 'setConfigDir', 'plugins_dir' => 'setPluginsDir', 'compile_dir' => 'setCompileDir', 'cache_dir' => 'setCacheDir', ); if (isset($allowed[$name])) { $this->{$allowed[$name]}($value); } else { trigger_error('Undefined property: ' . get_class($this) . '::$' . $name, E_USER_NOTICE); } } /** * Check if a template resource exists * * @param string $resource_name template name * * @return boolean status */ public function templateExists($resource_name) { // 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($varname = null) { if (isset($varname)) { 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($this, $type); Smarty_CacheResource::invalidLoadedCache($this); return $_cache_resource->clearAll($this, $exp_time); } /** * 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($this, $type); Smarty_CacheResource::invalidLoadedCache($this); 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($security_class)) { throw new SmartyException("Class '" . get_class($security_class) . "' must extend Smarty_Security."); } if ($security_class == null) { $security_class = $this->security_class; } if (!class_exists($security_class)) { 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($this); } 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(s) of template sources * * @return Smarty current Smarty instance for chaining */ public function setTemplateDir($template_dir) { $this->template_dir = array(); foreach ((array) $template_dir as $k => $v) { $this->template_dir[$k] = preg_replace('#(\w+)(/|\\\\){1,}#', '$1$2', rtrim($v, '/\\')) . DS; } $this->joined_template_dir = join(DIRECTORY_SEPARATOR, $this->template_dir); return $this; } /** * Add template directory(s) * * @param string|array $template_dir directory(s) 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 = (array) $this->template_dir; if (is_array($template_dir)) { foreach ($template_dir as $k => $v) { $v = preg_replace('#(\w+)(/|\\\\){1,}#', '$1$2', rtrim($v, '/\\')) . DS; if (is_int($k)) { // indexes are not merged but appended $this->template_dir[] = $v; } else { // string indexes are overridden $this->template_dir[$k] = $v; } } } else { $v = preg_replace('#(\w+)(/|\\\\){1,}#', '$1$2', rtrim($template_dir, '/\\')) . DS; if ($key !== null) { // 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($index = null) { if ($index !== null) { return isset($this->template_dir[$index]) ? $this->template_dir[$index] : null; } return (array) $this->template_dir; } /** * Set config directory * * @param $config_dir * * @return Smarty current Smarty instance for chaining */ public function setConfigDir($config_dir) { $this->config_dir = array(); foreach ((array) $config_dir as $k => $v) { $this->config_dir[$k] = preg_replace('#(\w+)(/|\\\\){1,}#', '$1$2', rtrim($v, '/\\')) . DS; } $this->joined_config_dir = join(DIRECTORY_SEPARATOR, $this->config_dir); return $this; } /** * Add config directory(s) * * @param string|array $config_dir directory(s) 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 = (array) $this->config_dir; if (is_array($config_dir)) { foreach ($config_dir as $k => $v) { $v = preg_replace('#(\w+)(/|\\\\){1,}#', '$1$2', rtrim($v, '/\\')) . DS; if (is_int($k)) { // indexes are not merged but appended $this->config_dir[] = $v; } else { // string indexes are overridden $this->config_dir[$k] = $v; } } } else { $v = preg_replace('#(\w+)(/|\\\\){1,}#', '$1$2', rtrim($config_dir, '/\\')) . DS; if ($key !== null) { // override directory at specified index $this->config_dir[$key] = rtrim($v, '/\\') . DS; } else { // append new directory $this->config_dir[] = rtrim($v, '/\\') . 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($index = null) { if ($index !== null) { return isset($this->config_dir[$index]) ? $this->config_dir[$index] : null; } return (array) $this->config_dir; } /** * Set plugins directory * * @param string|array $plugins_dir directory(s) of plugins * * @return Smarty current Smarty instance for chaining */ public function setPluginsDir($plugins_dir) { $this->plugins_dir = array(); foreach ((array) $plugins_dir as $k => $v) { $this->plugins_dir[$k] = rtrim($v, '/\\') . DS; } return $this; } /** * Adds directory of plugin files * * @param $plugins_dir * * @return Smarty current Smarty instance for chaining */ public function addPluginsDir($plugins_dir) { // make sure we're dealing with an array $this->plugins_dir = (array) $this->plugins_dir; if (is_array($plugins_dir)) { foreach ($plugins_dir as $k => $v) { if (is_int($k)) { // indexes are not merged but appended $this->plugins_dir[] = rtrim($v, '/\\') . DS; } else { // string indexes are overridden $this->plugins_dir[$k] = rtrim($v, '/\\') . DS; } } } else { // append new directory $this->plugins_dir[] = rtrim($plugins_dir, '/\\') . DS; } $this->plugins_dir = array_unique($this->plugins_dir); return $this; } /** * Get plugin directories * * @return array list of plugin directories */ public function getPluginsDir() { return (array) $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($compile_dir) { $this->compile_dir = rtrim($compile_dir, '/\\') . 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($cache_dir) { $this->cache_dir = rtrim($cache_dir, '/\\') . 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($modifiers) { $this->default_modifiers = (array) $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($modifiers) { if (is_array($modifiers)) { $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 ($type !== null) { $this->autoload_filters[$type] = (array) $filters; } else { $this->autoload_filters = (array) $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 ($type !== null) { if (!empty($this->autoload_filters[$type])) { $this->autoload_filters[$type] = array_merge($this->autoload_filters[$type], (array) $filters); } else { $this->autoload_filters[$type] = (array) $filters; } } else { foreach ((array) $filters as $key => $value) { if (!empty($this->autoload_filters[$key])) { $this->autoload_filters[$key] = array_merge($this->autoload_filters[$key], (array) $value); } else { $this->autoload_filters[$key] = (array) $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($type = null) { if ($type !== null) { 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($tpl_name) { if (!is_readable($tpl_name)) { 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_object($cache_id) || is_array($cache_id))) { $parent = $cache_id; $cache_id = null; } if ($parent !== null && is_array($parent)) { $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($this, $template) . $cache_id . $compile_id; } else { $_templateId = $this->joined_template_dir . '#' . $template . $cache_id . $compile_id; } if (isset($_templateId[150])) { $_templateId = sha1($_templateId); } if ($do_clone) { 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 (!empty($data) && is_array($data)) { // set up variable values foreach ($data as $_key => $_val) { $tpl->tpl_vars[$_key] = new Smarty_variable($_val); } } 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 (already loaded) if ($check && (is_callable($plugin_name) || class_exists($plugin_name, false))) { return true; } // Plugin name is expected to be: Smarty_[Type]_[Name]

  • 上一条:
    php封装的smartyBC类完整实例
    下一条:
    PHP内存缓存功能memcached示例
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 用Time Warden监控PHP中的代码处理时间(0个评论)
    • 在PHP中使用array_pop + yield实现读取超大型目录功能示例(0个评论)
    • Property Hooks RFC在PHP 8.4中越来越接近现实(0个评论)
    • 近期文章
    • 在windows10中升级go版本至1.24后LiteIDE的Ctrl+左击无法跳转问题解决方案(0个评论)
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(95个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-11
    • 2017-12
    • 2018-01
    • 2018-02
    • 2018-03
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-09
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    • 2024-09
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客