- Автор темы
- #1
Пожалуйста, приведите эту функцию к идеальному виду (крайне желательно - современно, т.е. - через glob, а не readdir
В данном виде - функция отрабатывает на отлично, но если её из одного и того же скрипта вызвать более одного раза, то результаты её работы суммируются, т.к. используются статические переменные.
х.з., как красиво решить эту проблему.
ЗЫ: Возможно, помимо косяка со статическими переменными, приведённый пример в целом не хлещет оптимальностью. Если это так, то переделайте к нужному виду, плз
PHP:
function _info ( $path )
{
static $i = 0; // Счётчик для определения наличия вложенных директорий (на случай запроса информации по единичному файлу).
static $result = array // Массив с результатами.
(
0, // Общий (конечный) размер в байтах.
-1, // Количество директорий.
0 // Количество файлов.
);
// Работа с очередным файлом.
if ( is_file ( $path ) )
{
$result[2]++;
$result[0] += filesize ( $path );
}
// Работа с очередным каталогом.
elseif ( is_dir ( $path ) )
{
$i++;
$result[1]++;
$list = glob ( $path . '/*' );
foreach ( $list as $k => $v )
{
_info ( $list[$k] ); // Рекурсия.
}
}
// Проверка на наличие вложенных директорий.
if ( $i < 2 )
{
$result[1] = 0;
}
return $result; // Возврат массива с результатами.
}
х.з., как красиво решить эту проблему.
ЗЫ: Возможно, помимо косяка со статическими переменными, приведённый пример в целом не хлещет оптимальностью. Если это так, то переделайте к нужному виду, плз