2008年3月10日 星期一

class_list的程式


  $cl_base=array();
$cl_list=array();
$cl_url=array();

function addbase($cl_name,$url) {
global $cl_base;
$cl_base['name'][] = $cl_name;
$cl_base['url'][]=$url;
}

function addlist($cp_name,$c_name,$url) {
global $cl_list,$cl_url;
$cl_list[$cp_name][]=$c_name;
$cl_url[$c_name]=$url;
}

function printfile($path,$len,$new_line) {

$d = dir($path);
while($entry=$d->read()) {
if (($entry != "..") && ($entry != ".")) {
if (substr($entry,-3)=='php') {
$tt='';
for ($i=0;$i<$len;$i++) { $tt.='----';}
$tt.=$entry;
$fp=fopen($path .'/'. $entry,"r");
$show=0;
while (!feof($fp)) {
$ff = fgets($fp,9999);
$tf = trim($ff);
if (substr($tf,0,6)=='class ') {
$show=1;
$tf_arr = explode('extends',substr($tf,6));
if (count($tf_arr)==1) { // no extend
$classname_arr = explode(' ',trim($tf_arr[0]));
$real_name = $classname_arr[0];
if (substr($real_name,-1)=='{') $real_name=substr($real_name,0,strlen($realname)-1);
$tt .= '>'.$real_name;
addbase($real_name,$path .'/' . $entry);
} else {
$classname_arr = explode(' ',trim($tf_arr[0]));
$real_name = $classname_arr[0];
if (substr($real_name,-1)=='{') $real_name=substr($real_name,0,strlen($realname)-1);
$tt .= '>'.$real_name;
//echo '>'.$classname_arr[0];
$classp_arr = explode(' ',trim($tf_arr[1]));
$real_name2 = $classp_arr[0];
if (substr($real_name2,-1)=='{') $real_name2=substr($real_name2,0,strlen($realname2)-1);
$tt .= '-'.$real_name2;
addlist($real_name2,$real_name,$path .'/' . $entry);
}

} elseif (substr($tf,0,9)=='function ') {
$tt2=explode(')',trim($tf));


echo $real_name .' '. $tt2[0].')' . $new_line;

}
}
//if ($show)
// echo $tt.$new_line;
}

if (is_dir($path."/" . $entry )) {
//for ($i=0;$i<$len;$i++) { echo '---*';}
//echo $entry . $new_line;
printfile($path . "/" .$entry, $len+1,$new_line);
}

}
}

}

function printsubclass($cl_name,$lvl) {
global $new_line,$cl_list,$cl_url,$len;
foreach ($cl_name as $cl) {
for ($i=0;$i<$lvl;$i++) { echo '----';} {
echo $cl .'--->'.substr($cl_url[$cl],$len). $new_line;
printsubclass($cl_list[$cl],$lvl+1);
}
}
}
/*
$path1="D:\\tycx\html\kernel";
$path2="D:\\tycx\html\class";
$path3="D:\\tycx\html\include";
*/

$path1="D:\\tycx\html";
$len=strlen($path1);
//$path2="D:\\tycx\html\modules\x_scorem";
//$path3="D:\\tycx\html\modules\x_shepherd";




$new_line = "\r\n";

printfile($path1,0,$new_line);
//printfile($path2,0,$new_line);
//printfile($path3,0,$new_line);

foreach ($cl_base['name'] as $i=>$cl) {
echo $cl . ' ' .substr($cl_base['url'][$i],$len) . $new_line;
printsubclass($cl_list[$cl],1);

}

沒有留言: