加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP实现统计代码行数小工具分享

发布时间:2022-06-26 10:35:43 所属栏目:PHP教程 来源:互联网
导读:本文实例为大家分享了PHP实现统计代码行数小工具,供大家参考,具体内容如下 为了方面统计编程代码行数,做了一个小工具。 自动统计指定目录以及目录下的所有文件。 ?php class TotalCode { /** * 统计当前文件有多少行代码, * @return TotalCodeInfo */
  本文实例为大家分享了PHP实现统计代码行数小工具,供大家参考,具体内容如下
 
  为了方面统计编程代码行数,做了一个小工具。
 
  自动统计指定目录以及目录下的所有文件。
 
  <?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[] = "/your/path";
     
  $obj = new TotalCode();
  $obj->main($dirList);。
 

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读