- /**
- * @著者管理者
- *
- */
- class TestGenerate {
- public static $appFolder = "";
- public static $ignoreFilePaths = array (
- "xxxx/xxx.php"
- );
- public static function start() {
- $AppPath = "E:\myApp";
- TestGenerate::$appFolder = $AppPath;
- $destManifestPath = "E:\temp2\dest.md5.txt";
-
- // dest ファイルハンドル
- $manifestHandle = fopen ( $destManifestPath, "w+" );
-
- // ヘッダーを書き込みます
- TestGenerate::writeMaifestHeader ( $manifestHandle );
-
- // md5 を書き込みます
- TestGenerate::traverse ( $AppPath, $manifestHandle );
-
- // フッターを書きます
- TestGenerate::writeMaifestFooter ( $manifestHandle );
-
- // ファイルを閉じる
- fclose ( $manifestHandle );
- }
-
- /**
- * アプリケーションのルート ディレクトリ内のファイルを走査し、対応するファイルの長さと md5 情報を生成します
- *
- * @param known $AppPath
- * アプリケーションのルート ディレクトリ (例: xxx/xxx/analytics
- * @param string $destManifestPath)
- * 生成されたマニフェストファイルの保存場所のファイルハンドル
- */
- public static function traverse($ AppPath, $manifestHandle) {
- if (! file_exists ( $AppPath )) {
- printf ( $AppPath . " が存在しません!" );
- return;
- }
- if (! is_dir ( $AppPath )) {
- printf ( $AppPath . " はディレクトリではありません!" );
- return;
- }
- if (! ($dh = opendir ( $AppPath ))) {
- printf ( "ディレクトリの読み取り中に失敗しました!" );
- return;
- }
-
- // ファイルを読み取ります
- while ( ($file = readdir ( $dh )) != false ) {
- $subDir = $AppPath . DIRECTORY_SEPARATOR 。 $file;
-
- if ($file == "." || $file == "..") {
- continue;
- } else if (is_dir ( $subDir )) {
- // rescure
- TestGenerate::traverse ( $subDir, $manifestHandle );
- } else {
- // Sub はファイルです。
- TestGenerate::writeOneFieToManifest ( $subDir, $manifestHandle );
- }
- }
-
- // dir
- Closedir を閉じます ( $dh );
- }
-
- /**
- * ファイルのmd5情報をファイルに書き込みます
- *
- * @paramknown $filePath
- * @paramunknown $fileHandle
- */
- public static function writeOneFieToManifest($filePath, $fileHandle) {
- if (! file_exists ( $filePath )) {
- continue;
- }
-
- $relativePath = str_replace ( TestGenerate: :$appFolder . DIRECTORY_SEPARATOR, '', $filePath );
- $relativePath = str_replace ( "\", "/", $relativePath );
-
- // tmp ディレクトリを無視します
- if (strpos ( $relativePath, "tmp/" ) === 0) {
- return;
- }
-
- $fileSize = filesize ( $filePath );
- $fileMd5 = @md5_file ( $filePath );
-
- $content = "tt";
- $content .= '" ';
- $content .= $relativePath;
- $content .= '"';
- $content .= ' => array("';
- $content .= $fileSize;
- $content .= '","';
- $content .= $fileMd5;
- $content .= '"),';
- $content .= "n ";
-
- if (! fwrite ( $fileHandle, $content )) {
- print ($filePath . " を書き込めません!") ;
- }
- }
-
- /**
- * ヘッダー情報をマニフェストファイルに書き込む
- *
- * @param known $fileHandle
- */
- public static function writeMaifestHeader($fileHandle) {
- $header = "
- $header .= "n";
- $header .= "// このファイルは自動的に生成されます";
- $header .= "n";
- $header .= "名前空間テスト;";
- $header .= "n";
- $header .= "class MyFile {";
- $header .= "n";
- $header .= "tstatic $allFiles= array(";
- $header .= "n";
-
- if (! fwrite ( $fileHandle, $header )) {
- printf ( "ファイル ヘッダーの書き込み中に失敗しました。" );
- }
- }
-
- /**
- * マニフェストファイルに末尾情報を書き込む
- *
- * @param known $fileHandle
- */
- public static function writeMaifestFooter($fileHandle) {
- $footer = "t);";
- $footer .= "n";
- $footer .= "}";
- $footer .= "n ";
-
- if (! fwrite ( $fileHandle, $footer )) {
- printf ( "ファイル ヘッダーの書き込み中に失敗しました。" );
- }
- }
- }
-
- // アプリケーションを開始します
- TestGenerate::start ();
-
- ?>
复制代
|