Andy's Blog » » PHP模板类

PHP模板类

作者: 天行
模板类(改于phplib),没什么特别好的。主要是模板是纯HTML。方便美工和改。编程的时候稍复杂点。改后只有100行了。原来的1000多行(包括注释)

<?PHP
//From phplib,Power by phplib
class TEMPLATE
{
        
function TEMPLATE( $root = "." )
        
{
                
$this->root = $root;       
        
}
 
        
function setFile( $varname, $filename = "" )
        
{
                
if ( substr( $filename, 0, 1 ) != "/" )
                        
$filename = $this->root . "/" . $filename;               
 
                
$this->file[$varname] = $filename;
                
if ( !file_exists( $filename ) )
                        
exit( "文件: $filename 不存在" );
        
}
 
        
function set_block( $parent, $varname, $name = "" )
        
{
                
if ( !$this->loadfile( $parent ) )
                        
exit( "设置循环: 不能加载 $parent." );
                
if ( !$name )
                        
$name = $varname;
 
                
$str = $this->varvals[$parent];
                
$reg = "/[ \t]*<!--\s+BEGIN $varname\s+-->\s*?\n?(\s*.*?\n?)\s*<!--\s+END $varname\s+-->\s*?\n?/sm";
                
preg_match_all( $reg, $str, $m );
                
$str = preg_replace( $reg, "{" . "$name}", $str );
                
$this->replace( $varname, $m[1][0] );
                
$this->replace( $parent, $str );
                
return true;
        
}
 
        
function replace( $varname, $value = "")
        
{
                
$this->varkeys[$varname] = "/" .preg_quote( "{" . $varname . "}" ) . "/";
                
$this->varvals[$varname] = $value;
        
}
 
        
function unreplace( $varname )
        
{
                
unset( $this->varkeys[$varname] );
                
unset( $this->varvals[$varname] );
        
}
 
        
function parse( $target, $varname, $append = false )
        
{
                
$varvals_quoted = array();
                
if ( !$this->loadfile( $varname ) )
                        
exit( "不能加载 ".$varname );
                
reset( $this->varvals );
                
while ( list( $k, $v ) = each( $this->varvals ) )
                        
$varvals_quoted[$k] = preg_replace( array( '/\\\\/', '/\$/' ), array( '\\\\\\\\', '\\\\$' ), $v );
 
                
$str = $this->varvals[$varname];
                
$str = preg_replace( $this->varkeys, $varvals_quoted, $str );
 
                
$append ? $this->replace($target,$this->varvals[$target].$str):$this->replace($target,$str);
                
                
return $str;
        
}
 
        
function pparse( $target, $varname, $append = false ,$isreplace=1)
        
{       
                
$p = $this->parse( $target, $varname, $append );
                
$isreplace ? print preg_replace( '/{[^ \t\r\n}]+}/', "", $p ):print $p;
        
}
 
        
function loadfile( $varname )
        
{
                
if ( !isset( $this->file[$varname] ) || isset( $this->varvals[$varname] ) )
                        
return true;
 
                
$str = @implode("", @file($this->file[$varname]));
                
if ( empty( $str ) )
                        
exit( "加载文件: 加载 $varname, ".$this->file[$varname]." 不存在或者为空" );
 
                
$this->replace( $varname, $str );
 
                
return true;
        
}
 
        
function output( $varname )
        
{       
                
print preg_replace( '/{[^ \t\r\n}]+}/', "", $this->varvals[$varname] );
                
exit();
        
}
 
        
function checked($value,$name)
        
{
                
$value ? $this->replace($name,'checked'):$this->replace($name,'');
        
}
 
        
function selected($value,$name)
        
{
                !
$value ? $this->replace($name,'selected'):$this->replace($name,'');
        
}
}
?>

Incoming search terms:

Tags: PHP, class,

本文地址: http://blog.21andy.com/20060817/381.html

1 评论 to “PHP开源CMS之MODx”

  1. 齐特 于 2008-09-02 10:08:24 发表:

    弱弱的问一句 能否给个实例. 菜鸟 不知如何下手