Производительность. Много ли съест ресурсов динамическая функция подгрузки файлов? Целесообразно ли использовать динамическую подгрузку файлов. Есть небольшой класс, который реализует функцию autolod, в дальнейшем хочу так же подгружать любой необходимый файл. Как подгружаю: сначала функция принимает путь корня сайта, потом рекурсивно строит массив с путями всех директорий, а потом пробегает его форичем, проверяет существует ли запрошенный файл и если да, то подключает его, причем форич не прерывается до тех пор пока не пройдет все пути. Код:class Loader{ const DS = DIRECTORY_SEPARATOR; private static $path; private static $namespaces = false; private static $root; private static $dirlist=[]; public static function setRoot($root){ static::$root=$root; } public static function searchDir($root){ $scan = scandir($root); foreach($scan as $dir){ if(is_dir($root.self::DS.$dir) and $dir != '.' and $dir !='..'){ static::$dirlist[]=$root.self::DS.$dir; static::searchDir($root.self::DS.$dir); } } } public static function setAutoload($autoload=[self,'autoload']){ spl_autoload_register($autoload); } public static function autoload($class){ $class = explode('\\',strtolower($class)); $name = array_pop($class); if(!empty($class)){ static::$path = static::$root.self::DS.implode(self::DS,$class).self::DS.$name.'.php'; static::$namespaces=true; require_once(static::$path); } else{ static::$namespaces=false; !empty(static::$dirlist)?:static::searchDir(static::$root); foreach(static::$dirlist as $dir){ if(file_exists($dir.self::DS.$name.'.php')){ require_once($dir.self::DS.$name.'.php'); } } static::$path = static::$root.self::DS.$name.'.php'; } } } По поводу лишних телодвижений с установкой флага $namespaces - сначала хотел разбить код на функции, но пока не знаю целесообразен ли он вообще, не хочу этого делать.
Динамическая функция подгрузки файлов может съедать ресурсы, особенно если происходит рекурсивный поиск во всех директориях. В вашем случае, функция searchDir выполняется рекурсивно, что может замедлить работу скрипта, особенно если в директориях много файлов.
Также, использование динамической подгрузки файлов может сделать код менее понятным и усложнить отладку. Если у вас нет конкретной необходимости в динамической подгрузке файлов, то лучше использовать стандартные способы загрузки классов, например, автозагрузчик Composer.
Если вы все-таки решите использовать вашу динамическую функцию, то проверьте её производительность на больших объемах данных и файлов. Также, стоит избегать лишних операций и оптимизировать функцию, если это возможно.
Динамическая функция подгрузки файлов может съедать ресурсы, особенно если происходит рекурсивный поиск во всех директориях. В вашем случае, функция searchDir выполняется рекурсивно, что может замедлить работу скрипта, особенно если в директориях много файлов.
Также, использование динамической подгрузки файлов может сделать код менее понятным и усложнить отладку. Если у вас нет конкретной необходимости в динамической подгрузке файлов, то лучше использовать стандартные способы загрузки классов, например, автозагрузчик Composer.
Если вы все-таки решите использовать вашу динамическую функцию, то проверьте её производительность на больших объемах данных и файлов. Также, стоит избегать лишних операций и оптимизировать функцию, если это возможно.