search
2.7 LoaderFile.php — Поиск и фильтрация файлов
Назначение
LoaderFile — это вспомогательный класс, который предоставляет метод для получения списка файлов из директории
с возможностью фильтрации.
Он используется для поиска JS/CSS-файлов при сборке ассетов в Loader.php и AssetManager.
Основной метод
getList($dir, $arSearchFileType = false, $arIgnoreFile = false, $sortFlag = true): array
Аргументы
| Параметр | Описание |
|---|---|
| $dir | Абсолютный или относительный путь к директории |
| $arSearchFileType | Список нужных расширений, например: ['js', 'css'] |
| $arIgnoreFile | Список подстрок, по которым нужно исключать файлы (например, ['.map']) |
| $sortFlag | Сортировать результат или нет (по умолчанию true) |
Поведение
- Если путь не абсолютный — дополняется
$_SERVER["DOCUMENT_ROOT"]; - Выполняется
opendir($dir)и перебор всех файлов; - Пропускаются
.и..; - Применяется фильтрация по расширениям;
- Применяется фильтрация по подстрокам в имени файла;
- Возвращается массив вида:
Используется в:
Loader::getMinFile()— для поиска.js;Loader::getMinFileCss()— для поиска.css;- Других частях, где нужно получить список файлов определённого типа из папки компонента.
"/abs/path/to/file1.js" => "file1.js",
"/abs/path/to/file2.js" => "file2.js"
Пример вызова
$jsFiles = LoaderFile::getList('/simai/asset/simai.framework/component/modal/js/', ['js'], ['.map']);
Особенности
- Универсальный механизм обхода и фильтрации;
- Позволяет игнорировать нежелательные файлы (например,
.map,.bak,.DS_Store); - Автоматически дополняет путь до корня проекта при необходимости.