Пакет FS — содержит различные утилитарные классы для работы с файловой системой, а также для нахождения файлов по алиасам (укороченным названиям).
Пакет FS появился в результате слияния пакетов UTIL (частично) и FILE_SCHEMA.
Пакет FS содержит следующие группы классов:
- Классы-исключения пакета FS
- Классы для работы с файловой системой
- Классы для поиска файлов по алиасам
- Класс lmbFsTools — инструментарий пакета
| Класс | Назначение |
|---|---|
| lmbFs | Применяется для работы с файловой системой: создание и удаление каталогов, вывод содержимого каталогов, рекурсивный обход каталогов и т.д. |
| lmbFsRecursiveIterator | Применяется для рекурсивного обхода файловой системы с использованием интерфейса итератора. |
Эти классы используется для поиска файлов по укороченным названиям (alias-ам). Например, в где-то в коде мы указываем для имени шаблона просто newsline/edit.html, а при помощи данной системы мы найдем этот файл в одном из пакетов, установленных для приложения в папке var/dev/my_project/template/newsline/edit.html
Зачем это все нужно? Limb нацелен на высокое повторное использование не только классов, но и всех файлов, так или иначе относящихся к приложениям. Например, зачем копировать базовые шаблоны центра администрирования, если можно их держать в одном месте?
Кроме того, схема расположения файлов может сильно меняться от проекта к проекту, поэтому мы постарались реализовать максимально гибкий механизм поиска файлов по алиасам, который бы позволял добиваться повторного использования большинства файлов.
| Класс | Назначение |
|---|---|
| lmbFileLocator | Используется для поиска файлов по локациям, список которых определяются объектом, реализующим интерфейс lmbFileLocations. Этот объект передается в конструктор lmbFileLocator. |
| lmbFileLocatorDecorator | Базовый декоратор на lmbFileLocator. |
| lmbCachingFileLocator | Кеширующий lmbFileLocator. Позволяет значительно сократить время на поиск файлов. Наследуется от lmbFileLocatorDecorator |
| интерфейс lmbFileLocations | Интерфейс, состоящий из одного метода getLocations($params = array());. Возвращает массив путей, где локаторы должны искать файлы. |
| lmbFileLocationsList | Используется для составления списка локаций, где следует искать файл файловому локатору. Позволяет объединять явные пути, а также несколько объектов, реализующий lmbFileLocations в одно целое. |
| lmbIncludePathFileLocations | Возвращает список локаций на основе набора списка суффиксов путей и элементов include_path |
Более подробное описание этой подсистемы см. в описании класса lmbFileLocator.
| Класс | Назначение |
|---|---|
| lmbFsException | Общий класс-исключение пакета |
| lmbFsNotFoundException | Исключение о том, что по указанному пути файл не найден. Выбрасывается, например, в lmbFileLocator, если он не смог найти файл по алису |
lmbFsTools — автоматически добавляется в lmbToolkit при подключении файла limb/fs/common.inc.php.
lmbFsTools содержит 2 метода:
- getFileByAlias($alias, $paths, $locator_name) — позволяет получить полный путь до файла по его алиасу $alias. В качестве параметров передается $paths - строка из путей, где необходимо выполнить поиск файла, разделенных запятой, и название локатора (как бы идентификатор локатора).
- getFileLocator($paths, $locator_name) — создает стандартный локатор файлов или возвращает ранее созданный. Под стандартный имеется в виду локатор (lmbFileLocator) или кеширующий локатор (lmbCachingFileLocator, если определена константа LIMB_VAR_DIR), которому в качестве локаций передан объект класса lmbIncludePathFileLocations (см. выше) с $paths элементами. Метод getFileLocator используется внутри getFileByAlias
Пример:
$controller_class_name = 'MyController';
$file = $this->toolkit->findFileByAlias("$constructor_class_name.class.php", LIMB_CONTROLLERS_INCLUDE_PATH, 'controller');
lmb_require($file);
$controller = new $controller_class_name();