]> _ Git - cubist_util.git/commitdiff
wip #5817
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 22 Mar 2023 17:16:53 +0000 (18:16 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 22 Mar 2023 17:16:53 +0000 (18:16 +0100)
src/Files/Files.php
src/Files/RecursiveDirectoryIterator.php

index 1a124de41c49aa3ff25ecc5c0af5232156cd58ce..5b487d43bba1a4bf48d91c2fa109b1209402225c 100644 (file)
@@ -366,5 +366,28 @@ class Files
         return implode('/', $r);
     }
 
+    /**
+     * @param $path
+     * @param $recursive
+     * @param $countDirectories
+     * @return int
+     */
+    public static function count($path, $recursive = true, $countDirectories = false)
+    {
+        $res = 0;
+        if ($recursive) {
+            $it = new RecursiveDirectoryIterator($path);
+        } else {
+            $it = new \DirectoryIterator($path);
+        }
+        foreach ($it as $item) {
+            /** @var $item \SplFileInfo */
+            if (!$countDirectories && !$item->isFile()) {
+                continue;
+            }
+            $res++;
+        }
+        return $res;
+    }
 
 }
\ No newline at end of file
index b9ab558908c33cd27f84a37738a90fbd1606fc2d..562641687dee9e024c759b44c446f93a039312f8 100644 (file)
@@ -1,6 +1,8 @@
 <?php
 
 namespace Cubist\Util\Files;
+use FilesystemIterator;
+
 class RecursiveDirectoryIterator extends \RecursiveFilterIterator {
 
        protected $_exclude = array();
@@ -9,7 +11,7 @@ class RecursiveDirectoryIterator extends \RecursiveFilterIterator {
                if ($path instanceof \RecursiveIterator) {
                        $it = $path;
                } else {
-                       $it = new \RecursiveDirectoryIterator($path, \FilesystemIterator::SKIP_DOTS);
+                       $it = new \RecursiveDirectoryIterator($path, FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::SKIP_DOTS);
                }
                $this->_exclude = $exclude;