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

这个函数很古怪,没有别的地方调用,应该是获得为定义变量的值
该函数以$varname,名称未键的方式,返回一系列未处理变量名称(即一个含$a[$name]=$name的序列).
  function get_undefined($varname) {
    if ($this->debug & 4) {
      echo "<p><b>get_undefined:</b> varname = $varname</p>\n";
    } www.shengfang.org
    if (!$this->loadfile($varname)) { 载入文件
      $this->halt("get_undefined: unable to load $varname.");
      return false;
    }
 
    preg_match_all -- 进行全局正则表达式匹配
    preg_match_all("/{ ([^ \t\r\n }]+) }/", $this->get_var($varname), $m);
    $m = $m[1];
    if (!is_array($m)) {
      return false; www.shengfang.org
    }

    reset($m);
    while(list($k, $v) = each($m)) {
      if (!isset($this->varkeys[$v])) {
        if ($this->debug & 4) {
         echo "<p><b>get_undefined:</b> undefined: $v</p>\n";
        }
        $result[$v] = $v;
      }
    }

    if (count($result)) {
      return $result;
    } else {
      return false;
    }
  }

  function finish($str) { 最后处理替换后的数据
    switch ($this->unknowns) {
      case "keep":
      break;

      case "remove": 如果是移除,把{××}置空
        $str = preg_replace('/{ [^ \t\r\n }]+ }/', "", $str);
      break;

      case "comment": 替换为注释
        $str = preg_replace('/{ ([^ \t\r\n }]+) }/', "<!-- Template variable \\1 undefined -->", $str);
      break;
    }

    return $str; www.shengfang.org
  }


  function p($varname) { 打印
    print $this->finish($this->get_var($varname));
  }

www.shengfang.org
  function get($varname) { 取最终数据
    return $this->finish($this->get_var($varname));
  }

www.shengfang.org
  function filename($filename) { 文件名处理
    if ($this->debug & 4) {
      echo "<p><b>filename:</b> filename = $filename</p>\n";
    }
    if (substr($filename, 0, 1) != "/") { 如果是单个文件名,加上目录
      $filename = $this->root."/".$filename;
    }

    if (!file_exists($filename)) {
      $this->halt("文件:  $filename 不存在。有可能您的安装没有成功。");
    }
    return $filename;
  }


  function varname($varname) {
    return preg_quote("{ ".$varname." }"); preg_quote -- 转义正则表达式字符
  }

  function loadfile($varname) { 载入文件
    if ($this->debug & 4) {
      echo "<p><b>loadfile:</b> varname = $varname</p>\n";
    }

    if (!isset($this->file[$varname])) { 如果FILE数组没有对应该KEY的VAR
      // $varname does not reference a file so return
      if ($this->debug & 4) {
        echo "<p><b>loadfile:</b> varname $varname does not reference a file</p>\n";
      }
      return true;
    }

    if (isset($this->varvals[$varname])) {
      // will only be unset if varname was created with set_file and has never been loaded
      // $varname has already been loaded so return
      if ($this->debug & 4) {
        echo "<p><b>loadfile:</b> varname $varname is already loaded</p>\n";
      }
      return true;
    }
    $filename = $this->file[$varname]; 取得实际文件名

    /* use at file here to avoid leaking filesystem information if there is an error */
 file -- 把整个文件读入一个数组中
 implode--把一个数组里面的数据组合成为一个字符串
    $str = implode("", @file($filename));
    if (empty($str)) {
      $this->halt("loadfile: While loading $varname, $filename does not exist or is empty dot ");
      return false; www.shengfang.org
    }

    if ($this->debug & 4) {
      printf("<b>loadfile:</b> loaded $filename into $varname<br>\n");
    }
    $this->set_var($varname, $str); 把这个文件赋值给文件名KEY

    return true; www.shengfang.org
  }

  function halt($msg) {
    $this->last_error = $msg;

    if ($this->halt_on_error != "no") { 根据定义是否继续执行
      $this->haltmsg($msg);
    }

    if ($this->halt_on_error == "yes") {
      die("<b>程序意外终止。</b>"); 等效于EXIT
    }

    return fal www.shengfang.org se;
  }

  function haltmsg($msg) {
    printf("<b>模板错误:</b> %s<br>\n", $msg);
  }

} www.shengfang.org
?>


字体:

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

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

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



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

公告





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

最新日志

最新评论

友情链接

日历
342009 - 0734
   1234
567891011
12131415161718
19202122232425
262728293031 

最新引用
搜索

归档

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