Maison  >  Article  >  développement back-end  >  Exemple détaillé de la façon dont PHP compte le nombre de lignes de code et le nombre de fichiers

Exemple détaillé de la façon dont PHP compte le nombre de lignes de code et le nombre de fichiers

藏色散人
藏色散人avant
2022-12-27 16:49:515106parcourir

Cet article vous présente principalement les connaissances pertinentes sur les statistiques PHP et explique comment utiliser PHP pour compter le nombre de lignes de code et le nombre de fichiers. J'espère qu'il sera utile aux amis dans le besoin !

Utilisez PHP pour compter le nombre de lignes de code et le nombre de fichiers

Parfois, nous devons compter le nombre de lignes de code et le nombre de fichiers (comme par exemple demander une copie électronique), nous pouvons utiliser PHP pour les statistiques.

Définissez d'abord la variable d'environnement PHP

  • Windows :

Poste de travail->Propriétés->Paramètres système avancés->PATH Ajoutez le répertoire où se trouve PHP.exe

  • Linux Configurer l'environnement Variables :

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

Exécuter le code suivant dans le dossier du projet

<?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);
?>

Résultat

Exécuter le code

php count.php

Succès

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

Apprentissage recommandé : "Tutoriel vidéo PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer