プロジェクトの開発中に、他の人が php ドキュメントの管理が不足していることに気付きました。しかし、そのドキュメントには多くの機能がありませんでした
/**
* クラス名: doc
* 説明: ドキュメント生成クラス
* その他: ソースディレクトリを設定した後、生成されるディレクトリを絶対パスで指定することができます。 モード
* 1 は調整可能です。通常のタイプ、つまりスラッシュ ** で始まり * スラッシュで終わる
* 2 は、スラッシュ * で始まり * スラッシュで終わるものはすべて、ドキュメントの一部になります
。*/
class doc
{
var $docdirname;
var $docdir;
/**
* 関数名: doc()
* 関数関数: 構築
* 入力パラメータ: なし
* 関数戻り値: 戻り値の説明
* その他の命令: 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)
* 関数関数: redirect
* 入力パラメータ: $path ---------------- リダイレクトパス
* 関数の戻り値: 戻り値の説明
*その他の指示: 2004-10-13
*/
function redirect($path)
{
echo "ドキュメントは正常に生成されました。ここをクリックして表示します";
}
/**
* 関数名:loopDir($root,$filter=null)
* 関数: ディレクトリのトラバース
* 入力パラメータ: $root ------------------- ソースディレクトリ
$filter ----------------- Filter
* 関数の戻り値: array
* その他の命令: 2004-10-13
*/
functionloopDir($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->gt;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 = strto lower($type);
if( $type=="php")
{
Return true;
}
else
{
Return false;
}
}
/**
* 関数名: getContent($path)
* 関数機能: ファイルの内容を読み取る
* 入力パラメータ: $path ------------------- ファイルパス
* 関数の戻り値値: 文字列
* その他の指示: 2004-10-13
*/
function getContent($path)
{
$fp = ファイル($パス);
$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 = '//(*)[rn].**//isU';
ブレーク;
case '2':
$pattern = '//*.** //isU';
break;
}
preg_match_all($pattern,$content,$carr);
$getarr = array();
foreach($carr[0] as $key=>$val)
{
$getarr[] = トリム($val);
}
$str = implode("
",$getarr);
$str = preg_replace('/[r]/i' ,'
',$str);
$style = $this->getStyle();
$str = $this->getTable($str);
$str = $style.$str;
Return $str;
}
/**
* 関数名: etFilepath($filepath,$oldroot,$newroot)
* 関数: 生成されたファイルへのパスを設定します
* 入力パラメータ: $filepath -------------- ソースファイルパス
$oldroot -------------- ソース ディレクトリ パス
$newroot -------------- ターゲット ディレクトリ パス
* 関数の戻り値: 文字列
*その他の説明: 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
";
$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 ------------------- パス
* 関数の戻り値:なし
*その他の説明: 2004-10-13
*/
関数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)
* 関数: filter
* 入力パラメータ: $item -------------- Content
$arr ---- - ---------- Filter item
* 関数の戻り値: bool
* その他の命令: 2004-10-13
*/
関数 filter($item,$arr=null)
{
$item = strto lower($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 = '
".$val['name']." |
".$content." |