====== Пакет FS ====== Пакет **FS** - содержит различные утилитарные классы для работы с файловой системой, а также для нахождения файлов по алиасам (укороченным названиям). :!: Пакет FS появился в результате слияния пакетов UTIL (частично) и FILE_SCHEMA. Пакет FS содержит следующие группы классов: * Классы-исключения пакета FS * Классы для работы с файловой системой * Классы для поиска файлов по алиасам * Класс lmbFsTools - инструментарий пакета ===== Классы для работы с файловой системой ===== ^Класс^Назначение^ |[[.fs:lmb_fs|lmbFs]]|Применяется для работы с файловой системой: создание и удаление каталогов, вывод содержимого каталогов, рекурсивный обход каталогов и т.д.| |[[.fs:lmb_fs_recursive_iterator|lmbFsRecursiveIterator]]|Применяется для рекурсивного обхода файловой системы с использованием интерфейса итератора.| ===== Классы для поиска файлов по алиасам ===== Эти классы используется для поиска файлов по укороченным названиям (alias-ам). Например, в где-то в коде мы указываем для имени шаблона просто newsline/edit.html, а при помощи данной системы мы найдем этот файл в одном из пакетов, установленных для приложения в папке var/dev/my_project/template/newsline/edit.html **Зачем это все нужно?** Limb нацелен на высокое повторное использование не только классов, но и всех файлов, так или иначе относящихся к приложениям. Например, зачем копировать базовые шаблоны центра администрирования, если можно их держать в одном месте? Кроме того, схема расположения файлов может сильно меняться от проекта к проекту, поэтому мы постарались реализовать максимально гибкий механизм поиска файлов по алиасам, который бы позволял добиваться повторного использования большинства файлов. ^Класс^Назначение^ |[[.fs:lmb_file_locator|lmbFileLocator]]|Используется для поиска файлов по локациям, список которых определяются объектом, реализующим интерфейс [[.fs:lmb_file_locations|lmbFileLocations]]. Этот объект передается в конструктор lmbFileLocator.| |**lmbFileLocatorDecorator**|Базовый декоратор на [[.fs:lmb_file_locator|lmbFileLocator]].| |[[.fs:lmb_caching_file_locator|lmbCachingFileLocator]]| Кеширующий lmbFileLocator. Позволяет значительно сократить время на поиск файлов. Наследуется от lmbFileLocatorDecorator.| |интерфейс [[.fs:lmb_file_locations|lmbFileLocations]]|Интерфейс, состоящий из одного метода getLocations($params = array());. Возвращает массив путей, где локаторы должны искать файлы.| |[[.fs:lmb_file_locations_list|lmbFileLocationsList]]|Используется для составления списка локаций, где следует искать файл файловому локатору. Позволяет объединять явные пути, а также несколько объектов, реализующий lmbFileLocations в одно целое.| |[[.fs:lmb_include_path_file_locations|lmbIncludePathFileLocations]]|Возвращает список локаций на основе набора списка суффиксов путей и элементов include_path| Более подробное описание этой подсистемы см. в описании класса [[.fs:lmb_file_locator|lmbFileLocator]]. ===== Классы-исключения пакета FS ===== ^Класс^Назначение^ |**lmbFsException**|Общий класс-исключение пакета| |**lmbFsNotFoundException**|Исключение о том, что по указанному пути файл не найден. Выбрасывается, например, в lmbFileLocator, если он не смог найти файл по алису| ===== Класс lmbFsTools ===== **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();