⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 template.php

📁 read8v20读吧.net书网 v2.0,自己珍藏的原代码,今天上传部分来给大家一起交流哈!
💻 PHP
字号:
<?php
	class SmartTemplate
	{
		var $reuse_code     =  true;
		var $template_dir       =  '';
		var $temp_dir       =  '/tmp/';
		var $cache_dir      =  '/tmp/';
		var $cache_lifetime =  600;
		var $cache_filename;
		var $tpl_file;
		var $cpl_file;
		var $data           =  array();
		var $parser;
		var $debugger;
		function SmartTemplate ( $template_filename = '' )
		{
			global $_CONFIG;

			if (!empty($_CONFIG['smarttemplate_compiled']))
			{
				$this->temp_dir  =  $_CONFIG['smarttemplate_compiled'];
			}
			if (!empty($_CONFIG['smarttemplate_cache']))
			{
				$this->cache_dir  =  $_CONFIG['smarttemplate_cache'];
			}
			if (is_numeric($_CONFIG['cache_lifetime']))
			{
				$this->cache_lifetime  =  $_CONFIG['cache_lifetime'];
			}
			if (!empty($_CONFIG['template_dir'])  &&  is_file($_CONFIG['template_dir'] . '/' . $template_filename))
			{
				$this->template_dir  =  $_CONFIG['template_dir'];
			}
			$this->tpl_file  =  $template_filename;
		}

		//	Methods used in older parser versions
		function set_templatefile ($template_filename)	{	$this->tpl_file  =  $template_filename;	}
		function add_value ($name, $value )				{	$this->assign($name, $value);	}
		function add_array ($name, $value )				{	$this->append($name, $value);	}
		function assign ( $name, $value = '' )
		{
			if (is_array($name))
			{
				foreach ($name as $k => $v)
				{
					$this->data[$k]  =  $v;
				}
			}
			else
			{
				$this->data[$name]  =  $value;
			}
		}

		function append ( $name, $value )
		{
			if (is_array($value))
			{
				$this->data[$name][]  =  $value;
			}
			elseif (!is_array($this->data[$name]))
			{
				$this->data[$name]  .=  $value;
			}
		}
		function result ( $_top = '' )
		{
			ob_start();
			$this->output( $_top );
			$result  =  ob_get_contents(); 
			ob_end_clean();
			return $result;
		}
		function output ( $_top = '' )
		{
			global $_top;

			//	Make sure that folder names have a trailing '/'
			if (strlen($this->template_dir)  &&  substr($this->template_dir, -1) != '/')
			{
				$this->template_dir  .=  '/';
			}
			if (strlen($this->temp_dir)  &&  substr($this->temp_dir, -1) != '/')
			{
				$this->temp_dir  .=  '/';
			}
			//	Prepare Template Content
			if (!is_array($_top))
			{
				if (strlen($_top))
				{
					$this->tpl_file  =  $_top;
				}
				$_top  =  $this->data;
			}
			$_obj  =  &$_top;
			$_stack_cnt  =  0;
			$_stack[$_stack_cnt++]  =  $_obj;

			//	Check if template is already compiled
	    	$this->cpl_file  =  $this->temp_dir . preg_replace('/[:\/.\\\\]/', '_', $this->tpl_file) . '.php';
			$compile_template  =  true;
			if ($this->reuse_code)
			{
				if (is_file($this->cpl_file))
				{
					if ($this->mtime($this->cpl_file) > $this->mtime($this->template_dir . $this->tpl_file))
					{
						$compile_template  =  false;
					}
				}
			}
			if ($compile_template)
			{
				include_once (dirname( __FILE__ )."/templateparser.php");
				$this->parser = new SmartTemplateParser($this->template_dir . $this->tpl_file);
				if (!$this->parser->compile($this->cpl_file))
				{
					exit( "SmartTemplate Compiler Error: " . $this->parser->error );
				}
			}
			//	Execute Compiled Template
			include($this->cpl_file);

			//	Delete Global Content Array in order to allow multiple use of SmartTemplate class in one script
			unset ($GLOBALS[_top]);
		}

		function debug ( $_top = '' )
		{
			//	Prepare Template Content
			if (!$_top)
			{
				$_top  =  $this->data;
			}
			include_once ("class.smarttemplatedebugger.php");
			$this->debugger = new SmartTemplateDebugger($this->template_dir . $this->tpl_file);
			$this->debugger->start($_top);
		}

		function use_cache ( $key = '' )
		{
			if (empty($_POST))
			{
				$this->cache_filename  =  $this->cache_dir . 'cache_' . md5($_SERVER['REQUEST_URI'] . serialize($key)) . '.ser';
				if (($_SERVER['HTTP_CACHE_CONTROL'] != 'no-cache')  &&  ($_SERVER['HTTP_PRAGMA'] != 'no-cache')  &&  @is_file($this->cache_filename))
				{
					if ((time() - filemtime($this->cache_filename)) < $this->cache_lifetime)
					{
						readfile($this->cache_filename);
						exit;
					}
				}
				ob_start( array( &$this, 'cache_callback' ) );
			}
		}

		function cache_callback ( $output )
		{
			if ($hd = @fopen($this->cache_filename, 'w'))
			{
				fputs($hd,  $output);
				fclose($hd);
			}
			return $output;
		}

		function mtime ( $filename )
		{
			if (@is_file($filename))
			{
				return filemtime($filename);
			}
		}

	}

?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -