Overview

Namespaces

  • Faulancer
    • Controller
    • Exception
    • Form
      • Validator
        • Type
    • Helper
      • Reflection
    • Http
    • Mail
    • ORM
      • User
    • Service
      • Factory
    • ServiceLocator
    • Session
    • View
      • Helper

Classes

  • DirectoryIterator
  • Overview
  • Namespace
  • Class
 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: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 
<?php
/**
 * Class DirectoryIterator
 *
 * @package Faulancer\Helper
 * @author  Florian Knapp <office@florianknapp.de>
 */
namespace Faulancer\Helper;

use Faulancer\Exception\ConstantMissingException;
use Faulancer\Service\Config;
use Faulancer\ServiceLocator\ServiceLocator;

/**
 * Class DirectoryIterator
 */
class DirectoryIterator
{

    /**
     * The directories files
     * @var array
     */
    private static $files = [];

    /**
     * The initial directory
     * @var string
     */
    private static $defaultDirectory = '/Controller';

    /**
     * Get files from directory
     *
     * @param string $dir
     * @return array
     * @throws ConstantMissingException
     */
    public static function getFiles($dir = '')
    {
        /** @var Config $config */
        $config = ServiceLocator::instance()->get(Config::class);

        $dir = empty($dir) ? $config->get('applicationRoot') . self::$defaultDirectory : $dir;

        foreach (scandir($dir) as $res) {

            if ($res === '.' || $res === '..') {
                continue;
            }

            if (is_dir($dir . '/' . $res)) {
                self::getFiles($dir . '/' . $res);
                continue;
            }

            $namespace = ucfirst(str_replace([$config->get('applicationRoot'), '/'], ['', '\\'], $dir));

            if (!empty($config->get('namespacePrefix'))) {
                $namespace = $config->get('namespacePrefix') . $namespace;
            }

            self::$files[$namespace][] = $res;

        }

        return self::$files;
    }

}
API documentation generated by ApiGen