Skip to content

Latest commit

 

History

History
56 lines (41 loc) · 6.64 KB

File metadata and controls

56 lines (41 loc) · 6.64 KB

Пакет FS

Пакет 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.

Классы-исключения пакета 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();