dede获得某模块的基本信息函数GetFileXml()

admin2023-01-181015

函数名: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,下次就不用再进行这个条件里面了。

一直遍历到程序结束,然后,返回获得的字符串,注意的是这个字符串是没有解码的字符串。


网友评论