首页 Soft PlugIn RAN乱 Dev开发 Info资料 English WAP 留言 登陆 注册
-
Posted by Yippee | 评论(0) | 引用(0) | 阅读1554次
iwas18-PHP模板技术1模板类注释2

$t -> set_file("index", "blog/template/$tem/view.htm");
$t->set_var("rsscountt",$str1);
$t->parse("output", "index");
$t->p("output");
 解析:生成的目标变量;SET_FILE对应的变量名,是否追加 www.shengfang.org
  $itpl->parse("firsts","first");
  function parse($target, $varname, $append = false) {
    if (!is_array($varname)) { 非数组
      if ($this->debug & 4) {
        echo "<p><b>parse:</b> (with scalar) target = $target, varname = $varname, append = $append</p>\n";
      }
      $str = $this->subst($varname); SUBST模板文件
      if ($append) { 追加
        $this->set_var($target, $this->get_var($target) . $str);
      } else {
        $this->set_var($target, $str); 赋值
      } www.shengfang.org
    } else {
      reset($varname);
      while(list($i, $v) = each($varname)) { 循环取值
        if ($this->debug & 4) {
          echo "<p><b>parse:</b> (with array) target = $target, i = $i, varname = $v, append = $append</p>\n";
        }
        $str = $this->subst($v);
        if ($append) {
          $this->set_var($target, $this->get_var($target) . $str);
        } else {
          $this->set_var($target, $str);
        }
      }
    }

    if ($this->debug & 4) {
      echo "<p><b>parse:</b> completed</p>\n";
    }
    return $str;
  }

打印数据 www.shengfang.org
function pparse($target, $varname, $append = false) {
    if ($this->debug & 4) {
      echo "<p><b>pparse:</b> passing parameters to parse...</p>\n";
    }
    print $this->finish($this->parse($target, $varname, $append));
    return false;
  }

这个很别扭,好像是块替换
 $itpl->set_block("_index","cate_index","cate_indexs");
<!-- BEGIN cate_index -->
        | <a href="{ link }" class="header">{ cate_index_var }</a>
        <!-- END cate_index -->

  function set_block($parent, $varname, $name = "") {
    if ($this->debug & 4) {
      echo "<p><b>set_block:</b> parent = $parent, varname = $varname, name = $name</p>\n";
    }
    if (!$this->loadfile($parent)) { 载入文件
      $this->halt("set_block: unable to load $parent.");
      return false;
    }
    if ($name == "") {
      $name = $varname;
    }

    $str = $this->get_var($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->set_var($varname, $m[1][0]); 设置变量
    $this-> www.shengfang.org set_var($parent, $str);
    return true;
  }

执行数据替换
  function subst($varname, $append = false) {
    $varvals_quoted = array(); 定义数组
    if ($this->debug & 4) {
      echo "<p><b>subst:</b> varname = $varname</p>\n";
    }
    if (!$this->loadfile($varname)) {   载入文件
      $this->halt("subst: unable to load $varname.");
      return false;
    } www.shengfang.org

    // quote the replacement strings to prevent bogus stripping of special chars
    reset($this->varvals); 起始数组
    while(list($k, $v) = each($this->varvals)) { preg_replace -- 执行正则表达式的搜索和替换
      $varvals_quoted[$k] = preg_replace(array('/\\\\/', '/\$/'), array('\\\\\\\\', '\\\\$'), $v);
    }

    $str = $this->get_var($varname); 取值
    $str = preg_replace($this->varkeys, $varvals_quoted, $str);
    return $str;
  } www.shengfang.org


 打印数据替换后的数据
  function psubst($varname) {
    if ($this->debug & 4) {
      echo "<p><b>psubst:</b> varname = $varname</p>\n";
    }
    print $this->subst($varname);

    return fa www.shengfang.org lse;
  }

 
 获得所有的处理后的变量
  function get_vars() {
    if ($this->debug & 4) {
      echo "<p><b>get_vars:</b> constructing array of vars...</p>\n";
    }
    reset($this->varkeys); 所有以前SET_VAR定义的
    while(list($k, $v) = each($this->varkeys)) {
      $result[$k] = $this->get_var($k); 逐个取出来
    } www.shengfang.org
    return $result;
  } www.shengfang.org

  获得当前模板被处理后的文件字符串
  function get_var($varname) {
    if (!is_array($varname)) { 如果不是数组
      if (isset($this->varvals[$varname])) { 判断是否有该变量
        $str = $this->varvals[$varname]; 有则取SET_VAR所赋的值
      } else {
        $str = "";
      } www.shengfang.org
      if ($this->debug & 2) {
        printf ("<b>get_var</b> (with scalar) <b>%s</b> = '%s'<br>\n", $varname, htmlentities($str));
      }
      return $str;
    } else {
      reset($varname); 第一个
      while(list($k, $v) = each($varname)) { 分割
        if (isset($this->varvals[$v])) {
          $str = $this->varvals[$v];
        } else {
          $str = "";
        }
        if ($this->debug & 2) {
          printf ("<b>get_var:</b> (with array) <b>%s</b> = '%s'<br>\n", $v, htmlentities($str));
        }
        $result[$v] = $str; 返回数组
      }
      return $result;
    }
  } www.shengfang.org


字体:


Permanant URI永久地址 http://www.shengfang.org/blog/p/iwastmpl2.php
Trackback URI引用地址 http://www.shengfang.org/blog/tb.php?tb_id=1125306664

2005年8月29日17:11星期一  [Dev开发] 追踪此文的RSS
提示:
此文还没有评论。

称呼:    登陆   注册
   不注册,但记住我的信息
邮件:
(非必须)
评论: [UBB代码帮助]
粗体 斜体 下划线 链接 水平线 引用



验证码: 请输入你看见的数字
关闭UBB      提交时自动将内容复制到剪贴板

公告





统计信息
[Yippee]||[统计]||日志:2143
在线: 16||用户: 2635 [列表]
今日:504||到访:3654289
Rss:||评论:1668

最新日志

最新评论

友情链接

日历
342009 - 0734
   1234
567891011
12131415161718
19202122232425
262728293031 

最新引用
搜索

归档

杂项
Get RSS Feed (Version 2.0)
Get Atom Feed (Version 0.3)
编码:  UTF-8