欢迎光临
我们一直在努力

小巧的php文档生成类-PHP教程,PHP应用

建站超值云服务器,限时71元/月

在项目开发中发现对php的文档缺少管理,别人写了一个,功能不多

<?php

/**

* 类名: doc

* 描述: 文档生成类

* 其他: 可以对目录进行过滤,设置好源目录后,请用绝对路径指定生成目录,模式可调,模式

* 1为常规类型,即以 斜线**开头,以*斜线 结束

* 2为扩展类型,凡是 斜线*开头以*斜线 结束的部分都将成为文档的一部分

*/

class doc

{

var $docdirname;

var $docdir;

/**

* 函数名称: doc()

* 函数功能: 构造

* 输入参数: none

* 函数返回值: 返回值说明

* 其它说明: 2004-10-13

*/

function doc()

{

$this->docdirname = "doc/";

}

/**

* 函数名称: createdoc($root,$newdir,$mode="1",$filter=null)

* 函数功能: 创建文档

* 输入参数: $root ————– 源目录

$newdir ———– 目标目录

$mode ————- 模式,1为普通,2为扩展

$filter ———— 过滤目录

* 函数返回值: 返回值说明

* 其它说明: 2004-10-13

*/

function createdoc($root,$newdir,$mode="1",$filter=null)

{

$getarr = $this->loopdir($root,$filter);

$i = 0;

$this->createframe($newdir);

foreach($getarr as $key=>$val)

{

if($this->getphpfiles($val))

{

$content = $this->getcontent($val);

$content = $this->getdoc($content,$mode);

$filepath = $this->setfilepath($val,$root,$newdir);

$filedir = $this->getfiledir($filepath);

$this->mkdirs($filedir);

$this->setdoc($filepath,$content);

$data[$i][url] = "$filepath";

$data[$i][name] = "$val";

$i++;

}

}

if(!empty($data))

{

$this->createmenu($newdir,$data);

$this->redirect($this->docdir);

}

}

/**

* 函数名称: redirect($path)

* 函数功能: 转向

* 输入参数: $path —————- 转向路径

* 函数返回值: 返回值说明

* 其它说明: 2004-10-13

*/

function redirect($path)

{

echo "<a href=".$path." target=_blank>生成文档成功,点击此处查看</a>";

}

/**

* 函数名称: loopdir($root,$filter=null)

* 函数功能: 遍历目录

* 输入参数: $root ——————- 源目录

$filter —————– 过滤

* 函数返回值: array

* 其它说明: 2004-10-13

*/

function loopdir($root,$filter=null)

{

static $getarr=array();

$d = dir($root);

while (false !== ($entry = $d->read()))

{

if ($entry == "." || $entry == "..")

{

continue;

}

if($this->filter($entry,$filter))

{

if(is_dir($root.$entry))

{

$this->loopdir($d->path.$entry."/");

}

else

{

$getarr[] = $d->path.$entry;

}

}

}

$d->close();

return $getarr;

}

/**

* 函数名称: getphpfiles($path)

* 函数功能: 提取php文档

* 输入参数: $path —————- 文档路径

* 函数返回值: bool

* 其它说明: 2004-10-13

*/

function getphpfiles($path)

{

$type = preg_replace(/.*\.(.*[^\.].*)/i,\\1,$path);

$type = strtolower($type);

if($type=="php")

{

return true;

}

else

{

return false;

}

}

/**

* 函数名称: getcontent($path)

* 函数功能: 读取文件内容

* 输入参数: $path ——————- 文件路径

* 函数返回值: string

* 其它说明: 2004-10-13

*/

function getcontent($path)

{

$fp = file($path);

$content = implode(,$fp);

return $content;

}

/**

* 函数名称: getdoc($content,$mode="1")

* 函数功能: 取出php文件中的注释

* 输入参数: $content ———— 文档内容

$mode ————— 模式,1为普通,2为扩展

* 函数返回值: string

* 其它说明: 2004-10-13

*/

function getdoc($content,$mode="1")

{

switch($mode)

{

case 1:

$pattern = /\/(\*)[\r\n].*\*\//isu;

break;

case 2:

$pattern = /\/\*.*\*\//isu;

break;

}

preg_match_all($pattern,$content,$carr);

$getarr = array();

foreach($carr[0] as $key=>$val)

{

$getarr[] = trim($val);

}

$str = implode("<br><br>",$getarr);

$str = preg_replace(/[\r]/i,<br>,$str);

$style = $this->getstyle();

$str = $this->gettable($str);

$str = $style.$str;

return $str;

}

/**

* 函数名称: etfilepath($filepath,$oldroot,$newroot)

* 函数功能: 设置生成文件的路径

* 输入参数: $filepath ————– 源文件路径

$oldroot ————– 源目录路径

$newroot ————– 目标目录路径

* 函数返回值: string

* 其它说明: 2004-10-13

*/

function setfilepath($filepath,$oldroot,$newroot)

{

$oldroot = str_replace(/,"\\/",$oldroot);

$pattern = "/".$oldroot."(.*)/iu";

$filepath = preg_replace($pattern,\\1,$filepath);

$newpath = $newroot.$this->docdirname.$filepath;//echo "$newpath<br>";

$newpath = preg_replace(/(.*\.)(.*[^\.].*)/i,\\1htm,$newpath);

return $newpath;

}

/**

* 函数名称: getfiledir($path)

* 函数功能: 取得文档目录

* 输入参数: $path ————- 文档路径

* 函数返回值: string

* 其它说明: 2004-10-13

*/

function getfiledir($path)

{

$getpath = preg_replace(/(.*)(\/.*[^\.].*)/i,\\1,$path);

return $getpath;

}

/**

* 函数名称: setdoc

* 函数功能: 将注释写入指定目录并生成页面

* 输入参数: $filepath ————— 目录路径

$content —————- 写入的内容

* 函数返回值: 返回值说明

* 其它说明: 说明

*/

function setdoc($filepath,$content)

{

$fp = fopen($filepath,"w+");

flock($fp,lock_ex);

fwrite($fp,$content);

flock($fp, lock_un);

}

/**

* 函数名称: mkdirs($path)

* 函数功能: 创建目录

* 输入参数: $path ——————- 路径

* 函数返回值: none

* 其它说明: 2004-10-13

*/

function mkdirs($path)

{

$adir = explode(/,$path);

$dirlist = ;

$rootdir = $adir[0];

array_shift ($adir);

foreach($adir as $key=>$val)

{

if($val!=.&&$val!=..)

{

$dirlist .= "/".$val;

$dirpath = $rootdir.$dirlist;

if(!file_exists($dirpath)&&!is_file($dirpath))

{

mkdir($dirpath);

chmod($dirpath,0777);

}

}

}

}

/**

* 函数名称: filter($item,$arr=null)

* 函数功能: 过滤

* 输入参数: $item ————– 内容

$arr ————— 过滤项

* 函数返回值: bool

* 其它说明: 2004-10-13

*/

function filter($item,$arr=null)

{

$item = strtolower($item);

$filter = explode(,,$arr);

if($arr==null||!in_array($item,$filter))

{

return true;

}

else

{

return false;

}

}

/**

* 函数名称: createframe($root)

* 函数功能: 生成框架页

* 输入参数: $root ————— 首页的存放目录

* 函数返回值: str

* 其它说明: 2004-10-13

*/

function createframe($root)

{

$str =

<html>

<head>

<meta http-equiv="content-type" content="text/html; charset=gb2312">

<title>无标题文档</title>

</head>

<frameset cols="150,*" frameborder="yes" border="10" framespacing="5" bordercolor="#003366">

<frame src="menu.htm" name="leftframe" framespacing="5" frameborder="auto" border="5" bordercolor="#f5f5f5" topmargin="0" leftmargin="0" marginheight="0" marginwidth="0" >

<frame src="#" name="mainframe">

</frameset>

<noframes><body>

</body></noframes>

</html>;

$this->docdir = $root."index.htm";

$this->setdoc($this->docdir,$str);

}

/**

* 函数名称: createmenu($root,$data)

* 函数功能: 生成菜单

* 输入参数: $root ——————- 页面存入目录

$data ——————- 内容

* 函数返回值: string

* 其它说明: 2004-10-13

*/

function createmenu($root,$data)

{

$path = $root."menu.htm";

$str = $this->getstyle();

$str.= "<table>";

foreach($data as $key=>$val)

{

$str.= "<tr><td><a href=".$val[url]." target=mainframe>".$val[name]."</a></td></tr>";

}

$str.= "</table>";

$this->setdoc($path,$str);

}

/**

* 函数名称: getstyle()

* 函数功能: 样式

* 输入参数: none

* 函数返回值: string

* 其它说明: 2004-10-13

*/

function getstyle()

{

$str =

<style>

table {

font-family: "courier new","宋体";

border-collapse: collapse;

word-break:break-all;

}

td {

font-family: "courier new","宋体";

font-size: 12px;

line-height: 22px;

}

</style>;

return $str;

}

/**

* 函数名称: gettable($content)

* 函数功能: 把内容放入table中

* 输入参数: $content ———— 内容

* 函数返回值: string

* 其它说明: 2004-10-13

*/

function gettable($content)

{

$str = "<table width=\"100%\" border=\"1\" bordercolor=\"#dbdbdb\" cellpadding=\"5\" cellspacing=\"0\">

<tr>

<td bgcolor=\"#f5f5f5\">".$content."</td>

</tr>

</table>";

return $str;

}

}

// 使用

$d = new doc;

$filter = "adodb,smarty,cvs,templates,templates_c";

$d->createdoc("e:/www/kpub20/class/","e:/www/test/aaa/",1,$filter);

?>

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 小巧的php文档生成类-PHP教程,PHP应用
分享到: 更多 (0)