Heim  >  Artikel  >  Backend-Entwicklung  >  Detailliertes Beispiel dafür, wie PHP die Anzahl der Codezeilen und die Anzahl der Dateien zählt

Detailliertes Beispiel dafür, wie PHP die Anzahl der Codezeilen und die Anzahl der Dateien zählt

藏色散人
藏色散人nach vorne
2022-12-27 16:49:515028Durchsuche

Dieser Artikel führt Sie hauptsächlich in das relevante Wissen über PHP-Statistiken ein und spricht darüber, wie Sie mit PHP die Anzahl der Codezeilen und die Anzahl der Dateien zählen. Ich hoffe, dass er Freunden in Not hilfreich sein wird!

Verwenden Sie PHP, um die Anzahl der Codezeilen und die Anzahl der Dateien zu zählen.

Manchmal müssen wir die Anzahl der Codezeilen und die Anzahl der Dateien zählen (z. B. bei der Beantragung einer Softcopy), die wir verwenden können PHP für Statistiken.

Legen Sie zunächst die PHP-Umgebungsvariable fest

  • Windows:

Arbeitsplatz->Eigenschaften->Erweiterte Systemeinstellungen->PFAD Fügen Sie das Verzeichnis hinzu, in dem sich PHP.exe befindet

  • Linux Richten Sie die Umgebungsvariablen ein:

vim /etc/profile
PATH="$PATH:/root/php/bin/"

Führen Sie den folgenden Code im Projektordner aus

<?php
    class TotalCode {
    /**
* 统计当前文件有多少行代码,
* @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;
    }
    /**
* 统计当前目录下(含子目录)
* 有多少文件,以及多少行代码
*
* 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);
?>

Ergebnis

Führen Sie den Code aus

php count.php

Erfolg

TotalCodeInfo Object                             
(                                                
    [fileCount:TotalCodeInfo:private] => 1094    
    [lineCount:TotalCodeInfo:private] => 419702  
)

Empfohlenes Lernen: „PHP-Video-Tutorial "

Das obige ist der detaillierte Inhalt vonDetailliertes Beispiel dafür, wie PHP die Anzahl der Codezeilen und die Anzahl der Dateien zählt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen