Иногда вам будет казаться, что каких-то операторов в языке не хватает. Parser позволяет вам определить собственные операторы, которые затем можно будет использовать наравне с системными.
Операторами в Parser считаются методы класса MAIN, добавляя новые методы в этот класс вы расширяете базовый набор операторов.
Внимание: при описании оператора можно использовать и не локальные переменные, при этом вы будете читать и записывать в поля класса MAIN.
Пользовательские операторы могут определяться и в отдельных текстовых файлах без заголовка @CLASS, которые подключаются к нужным разделам сайта. Если в таком файле определить оператор (написав, скажем, @include[]), то при обращении ^include[…] всегда будет вызываться пользовательский оператор.
Будьте внимательны! Если определить оператор, одноименный с системным, то всегда будет вызываться пользовательский. При этом системный оператор вызвать нельзя никак. Стоит делать как можно меньше пользовательских операторов, используя вместо них статические методы пользовательских классов.
Создавать классы и пользоваться их методами гораздо удобнее, чем пользовательскими операторами. Простой пример: есть несколько разделов сайта, и для каждого из них нужно сделать раздел помощи. Создав несколько файлов, описывающих разные классы, можно получить одноименные методы разных классов. Вызывая методы как статические, мы имеем совершенно ясную картину, что к какому разделу относится:
^news:help[]
^forum:help[]
^search:help[]
Примеры
Поместите этот код…
@default[a;b]
^if(def $a){$a}{$b}
… в файл operators.p, в корень вашего веб-сайта.
Там, где вам необходимы дополнительные операторы, подключите этот модуль. Например, в корневом auto.p, напишите…
@USE
/operators.p
…теперь не только в любой странице, но, что главное, в любом вашем классе можно будет воспользоваться конструкцией
^default[$form:name;Аноним]
Подробности в разделе Создание методов и пользовательских операторов.