Функция предназначена для подсчёта числа строк в программных проектах, состоящих из множества вложенных директорий. Конечно, число строк не может свидетельствовать в полной мере о затраченных усилиях и времени на программный проект, но является важным показателем в оценке сложности проекта.
Код рекурсивной фукнции scan_dir, которая обходит директории
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
<?php ////////////////////////////////////////////////////////// // Рекурсивная функция - спускаемся вниз по каталогу ////////////////////////////////////////////////////////// function scan_dir($dirname) { // Объявляем переменные замены глобальными GLOBAL $extentions, $count; // Открываем текущую директорию $dir = opendir($dirname); // Читаем в цикле директорию while (($file = readdir($dir)) !== false) { // Если файл обрабатываем его содержимое if($file != "." && $file != "..") { // Если имеем дело с файлом - производим в нём замену if(is_file($dirname."/".$file)) { // Извлекаем из имени файла расширение $ext = strrchr($dirname."/".$file, "."); foreach($extentions as $exten) if(preg_match($exten, $ext)) { // Читаем содержимое файла $content = file($dirname."/".$file); // Подсчтываем число файлов $count += count($content); // Удаляем массив unset($content); } } // Если перед нами директория, вызываем рекурсивно // функцию scan_dir if(is_dir($dirname."/".$file)) { scan_dir($dirname."/".$file); } } } // Закрываем директорию closedir($dir); } ?> |
Воспользоваться результатами можно при помощи следующего кода
Код вызова функции scan_dir()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php // Имя корневой директории проекта $dirname = "softtime"; // Массив с расширениями файлов, для которых следует подсчитывать // число строк $extentions = array("#\.php#i"); // $extentions = array("#\.cpp#i","#\.h#i"); // Счётчик строк - глобальная переменная $count = 0; // Вызов функции, осуществляющей рекурсивный спуск по подкаталогам // корневого каталога scan_dir($dirname); // Записываем число строк в переменную $count file_put_contents("test",$count); ?> |