用PHP統(tǒng)計(jì)代碼行數(shù)和文件數(shù)量
有時(shí)候我們需要統(tǒng)計(jì)代碼行數(shù)和文件數(shù)量(比如申請軟著),我們可以用 PHP 進(jìn)行統(tǒng)計(jì)。
首先設(shè)置 PHP 環(huán)境變量
(相關(guān)資料圖)
Windows:
我的電腦->屬性->高級系統(tǒng)設(shè)置->PATH 加入PHP.exe的所在目錄
Linux 設(shè)置環(huán)境變量:
vim /etc/profilePATH="$PATH:/root/php/bin/"
在項(xiàng)目文件夾里執(zhí)行以下代碼
<?php class TotalCode { /*** 統(tǒng)計(jì)當(dāng)前文件有多少行代碼,* @return TotalCodeInfo*/ public function totalByFile($fullFileName) { $fileContent = file_get_contents($fullFileName); $lines = explode("\n",$fileContent); $lineCount = count($lines); for ($i = $lineCount -1; $i > 0; $i -= 1) { $line = $lines[$i]; if ($line != "") break; $lineCount -= 1; //最后幾行是空行的要去掉。 } unset($fileContent); unset($lines); $totalCodeInfo = new TotalCodeInfo(); $totalCodeInfo->setFileCount(1); $totalCodeInfo->setLineCount($lineCount); return $totalCodeInfo; } /*** 統(tǒng)計(jì)當(dāng)前目錄下(含子目錄)* 有多少文件,以及多少行代碼** totalInfo = array( "fileCount"=>?,"lineCount"=>? );** @return TotalCodeInfo*/ public function totalByDir($dirName) { $fileList = scandir($dirName); $totalCodeDir = new TotalCodeInfo(); foreach ($fileList as $fileName) { if ($fileName == "." || $fileName == "..") continue; $fullFileName = $dirName . "/" . $fileName; if (is_file($fullFileName)) { $totalCodeSub = $this->totalByFile($dirName . "/" . $fileName); } else if (is_dir($fullFileName)) { $totalCodeSub = $this->totalByDir($dirName . "/" . $fileName); } else { $totalCodeSub = new TotalCodeInfo(); } $totalCodeDir->increaseByOther($totalCodeSub); } return $totalCodeDir; } public function totalByDirOrFile($dirOrFileName) { if (is_dir($dirOrFileName)) { return $this->totalByDir($dirOrFileName); } else if (is_file($dirOrFileName)) { return $this->totalByFile($dirOrFileName); } else { return new TotalCodeInfo(); } } public function test() { $re = $this->totalByDir("/export/www/pm_web/configs"); var_dump($re); } public function main($dirList) { $totalCodeAll = new TotalCodeInfo(); foreach($dirList as $dirName) { $totalCodeSub = $this->totalByDirOrFile($dirName); $totalCodeAll->increaseByOther($totalCodeSub); } print_r($totalCodeAll); }}class TotalCodeInfo { private $fileCount = 0; private $lineCount = 0; public function getFileCount() { return $this->fileCount; } public function getLineCount() { return $this->lineCount; } public function setFileCount($fileCount) { $this->fileCount = $fileCount; return $this; } public function setLineCount($lineCount) { $this->lineCount = $lineCount; return $this; } /*** 累加*/ public function increaseByOther($totalCodeInfo) { $this->setFileCount( $this->fileCount + $totalCodeInfo->getFileCount()); $this->setLineCount( $this->lineCount + $totalCodeInfo->getLineCount()); return $this; }}$dirList = array();$dirList[] = "./";$obj = new TotalCode();$obj->main($dirList);?>
結(jié)果
執(zhí)行代碼
php count.php
成功
TotalCodeInfo Object ( [fileCount:TotalCodeInfo:private] => 1094 [lineCount:TotalCodeInfo:private] => 419702 )
推薦學(xué)習(xí):《PHP視頻教程》
以上就是實(shí)例詳解PHP統(tǒng)計(jì)代碼行數(shù)及文件數(shù)量的方法的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!
關(guān)鍵詞: