dede获得某模块的基本信息函数GetFileXml()
函数名:GetFileXml($hash, $ftype='hash')
功能:获取<modulefiles></modulefiles>之间的文件内容。
所在文件:include/dedemodule.class.php
这个函数用的非常少,只在一个地方用到就是在我们制作模块安装包时用到,算是比较冷僻的函数了。
函数代码:
function GetFileXml($hash, $ftype='hash') { if($ftype=='file') $filename = $hash; else $filename = $this->modulesPath.'/'.$this->GetHashFile($hash); $filexml = ''; $fp = fopen($filename,'r') or die("文件 {$filename} 不存在或不可读!"); $start = 0; while(!feof($fp)) { $line = fgets($fp,1024); if($start==0) { if(preg_match("/<modulefiles/is",$line)) { $filexml .= $line; $start = 1; } continue; } else { $filexml .= $line; } } fclose($fp); return $filexml; }
看上去比较长,但是,如果我们读过函数GetSystemFile($hashcode, $ntype, $enCode=TRUE)代码,我们就知道了这个函数的比较简单了。
首先当然,时找到要获取代码的文件,然后,打开这个文件,然后,取出.xml文件里面的一行代码,判断是不是第一次遍历这个,若是,则把标志位$start 设为1,下次就不用再进行这个条件里面了。
一直遍历到程序结束,然后,返回获得的字符串,注意的是这个字符串是没有解码的字符串。