::: PHP.com.ua - учимся вместе. ::: ::: PHP.com.ua - учимся вместе. :::



 
   - header
  - Я канєшно вибачаюся, ну от вирішив навчи...
  - Трудности с включенным safe mode, не вид...
  - Поможіть з установкою локальки
  - Помогите с функцией utf2win1251
  - Вывод окна предупреждения
  - допоможіть нічого не розумію


Главная
Новости
Статьи
Шпаргалки
Файлы
О проекте
Форум
Футболки


FREEhost.com.ua - купил хостинг 10 у.е. на Begun в подарок.

iName.com.ua - регистрация доменных имен и хороший хостинг.

Библиотека программиста - нужный вам исходник или документация по необходимому для вас языку программирования.

Designclub - Клуб дизайнеров Украины.

Регистрация доменов
Хостинг

 HowtoForge.ORG.UA - Это первый Украинский ресурс развития open source программного обеспечения


Путь: Шпаргалки

Шпаргалки

Автор: - Azazel
Дата публикации - 25.07.2006
Просмотров: - 4317

Кол-во написаного кода в проекте


Требования: PHP5+

Небольшой класс для подсчета обьема написаного кода. Писалось за 20 минут и может быть плохо расширяемым, но уже функционирует:

[php]
class LineCounter {
    private $total_lines;
    private $total_files;
    private $start_path;
    private $level;
    private $mask;
    
    //start_path - путь к каталогу с которого начинать счетчик
    //level - глубина проникновения счетчика
    //mask - маска файлов попадающих под счет
    public function __construct($start_path, $level, $mask) {
        $this->start_path = $start_path;
        $this->level = $level;
        $this->mask = $mask;
    }
    
    private function countLines($fpath) {
        $fp = fopen($fpath, "r");
        $i = 0;
        while (!feof($fp)) {
            fgets($fp);
            $i++;
        }
        
        return $i;
    }
    
    private function buildFileList() {
        $file = glob($this->start_path.$this->mask);
        
        $full_p = $this->start_path;
        for ($i = 0; $i < $this->level; $i++) {            
            $full_p .= str_repeat('*/', $i);
            $file = array_merge($file, glob($full_p.$this->mask));
        }
        
        return $file;
    }
    
    private function getTotalLines($files_array) {
        $total_f = 0;
        foreach ($files_array as $f) {
            $total += countLines($f);
        }
        
        $this->total_lines = count($files_array);
        $this->total_files = $total_f;
    }
    
    public function getStat() {
        $this->getTotalLines($this->buildFileList());
        echo "Start path: ".realpath($this->start_path)."<br>\n";
        echo "Total: {$this->total_lines} lines in {$this->total_files} files";
    }
}
[

/php]

Применяем следующим образом:
посчитать кол-во файлов и строк в текущем и вложеных каталогах с глубиной прониктовения 10 и по маске файла "*.php":

[php]
$counter = new LineCounter("./", 10, '*.php');
$counter->getStat();
[

/php]



Обсудить в ФОРУМе - комментариев (4)


Путь: Шпаргалки

Если вы заметили орфографическую, стилистическую или другую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Контакты Design by webFaction Ukrainian PHP Group 2004-2005