^use[файл]
^use[файл;опции] [3.4.3]
$.replace(true)
Оператор позволяет использовать модуль из указанного файла. Если путь к файлу начинается с "/", то считается, что это путь от корня веб-пространства (а не от корня диска!). В любом другом случае Parser будет искать модуль сначала относительно файла, из которого происходит подключение модуля, а затем по путям, определенным в переменной $CLASS_PATHв Конфигурационном методе.
Внимание: до версии 3.4.1 не производился поиск подключаемых модулей относительно файла, в котором написаны @USE/^use[], а искался или относительно корня веб-пространства или по путям, определённым в $CLASS_PATH.
Внимание: начиная с версии 3.4.3 в случае загрузки класса с именем, которое уже существует у ранее загруженного класса, выдаётся исключение. Отключить его можно с помощью указания вновь появившейся опции $.replace(true).
Для подключения модулей также можно воспользоваться конструкцией:
@USE
имя файла 1
имя файла 2
…
Разница между этими конструкциями в том, что использование @USE подключает файлы с модулями до начала выполнения кода, в то время как оператор use может быть вызван непосредственно из тела программы, например:
^if(условие){
^use[модуль1]
}{
^use[модуль2]
}
@USE начиная с версии 3.4.5 вызывает оператор ^use[], который, как и любой другой оператор, можно переопределить. Это позволяет реализовавать свою логику загрузки модулей. По ссылке реализация логики оператора ^use[] на Parser.
Начиная с версии 3.4.6, при указании опции $.main(true) перед загрузкой файла будут загружены все существующие auto.p, начиная от корня веб-пространства, до директории с файлом - то есть так же, как это происходит при обработке запроса к странице.
Замечание: попытки подключить уже подключенные ранее модули не приводят к повторным считываниям файлов с диска.
Крайне рекомендуем использовать возможность сохранения результатов работы кода, используя оператор use для подключения необходимых модулей в коде оператора cache.