====== lmbFileLocator ======
**Класс lmbFileLocator** - основной класс пакета FS, который ищет файлы по алиасам при помощи "списка локаций". Список локаций - это объект, реализующего интерфейс [[lmb_file_locations]].
**Алиас** - это укороченное название файла, например news/index.html. Полный путь до файла (резолвинг алиаса) будет определен объектом класса lmbFileLocator. В результате резолвинга алиса мы можем получить что-то наподобие /var/dev/project/my_project/templates/ru/news/index.html.
Общая схема реализации этой подсистемы выглядит следующим образом:
{{{limb3:ru:packages:fs:limb3_file_schema.png| }}}
Итак, lmbFileLocator принимает объект, реализующий lmbFileLocations:
$locator = new lmbFileLocator(new lmbFileLocationsList(array('/dir1', '/dir2', '/dir3')));
Для поиска файлов lmbFileLocator содержит два метода:
* **locate($alias, $params = array())**
* **locateAll($prefix = '')**.
* $alias - это укороченное название файла, который нужно найти.
* $params - список дополнительных параметров для поиска, передаются в список локаций.
Например:
$locator->locate('news/news.html', array('lan' => 'ru'));
[[lmb_file_locator]] часто используется в наборах инструметов (tools), например, в пакете [[limb3:ru:packages:web_app|WEB_APP]] в классе [[limb3:ru:packages:web_app:lmb_web_app_tools|lmbWebAppTools]] :: createController($controller_name) или в пакете VIEW в методе lmbViewTools :: getWactLocator().
Пример создания локатора:
$locations = new lmbIncludePathFileLocations('/settings/');
$locator = new lmbCachingFileLocator(new lmbFileLocator($locations));
Здесь будет создан кеширующий [[lmb_caching_file_locator|lmbCachingFileLocator]], который будет искать любые файлы файлы в папках /setting/ в папках, указанных в include_path. Например, при поиске conf-файла routes.conf.php он может вернуть var/dev/limb/web_app/settings/routes.conf.php
Пример инициализации локатора можно также увидеть в методе lmbFsTools :: getFileLocator().