Иллюстрированный самоучитель по PostgreSQL

Переменные и объекты LXP

Аргументы CGI

LXP, как и многие языки web-программирования, ведет внутренний список переданных аргументов CGI. В LXP эти аргументы косвенно интерпретируются как переменные.

Примечание
В контексте этой главы термины "аргумент" и "переменная" практически эквивалентны. Ниже термин "аргумент" обычно употребляется по отношению к переменным, переданным формой, а термин "переменная" – по отношению к переменным в памяти (либо переданным формой, либо заданным разработчиком)
.

Аргументы передаются формами с именем и значением. Для каждого аргумента, переданного документу LXP (например, через форму HTML), создается переменная, имя которой совпадает с именем аргумента.

При передаче двух одноименных аргументов используется последнее значение, переданное форме (кроме массивов – см. подраздел "Массивы CGI").

Массивы CGI

Объекты часто используются при работе с массивами CGI. Обычно при передаче документу LXP нескольких аргументов с одинаковыми именами используется последний аргумент, а предыдущие значения игнорируются. Но если имя передаваемого аргумента CGI завершается парой квадратных скобок (например, <select name="test[] ">), то в объект LXP автоматически включается массив значений, присвоенных имени перед квадратными скобками.

Иначе говоря, любой переданный формой CGI аргумент, имя которого заканчивается квадратными скобками (например, test[]), автоматически интерпретируется LXP как массив. Когда такой аргумент передается LXP формой, все присвоенные ему значения автоматически накапливаются в отдельной переменной и различаются по значениям числовых индексов, указываемых в квадратных скобках за именем объекта.

Например, если форма HTML передает аргумент с именем test[], которому присваиваются три значения, в объекте test создается массив из трех элементов. Они обозначаются соответственно test[0], test[1] и test[2].

Объекты непосредственных запросов SQL

При непосредственном выполнении запросов SQL на поля итогового набора можно ссылаться при помощи специального объекта this. Ссылки имеют вид this. поле, где поле – имя поля.

Также создается объект sql с метаданными, описывающими итоговый набор, – номером текущей записи в наборе (sql .row), смещением текущей записи (sql .offset), количеством записей, выбранных при последнем запросе SQL (sql.numrows), и количеством полей в последнем запросе SQL (sql .numcols или sql.numfields).

Глобальные объекты LXP

Два специальных объекта, lхр и env, являются системными объектами и содержат информацию о LXP и переменных среды.

К любой переменной среды, заданной в конфигурации CGI Apache (например, REMOTE_ADDR), можно обратиться в формате env.переменная. Например, значение переменной env.REMOTE_ADDR определяет адрес удаленного клиента, обращающегося к текущему документу (если эта возможность была включена в Apache).

Объект lхр зарезервирован для системных целей. В версии 0.8 он содержит только три переменные, из которых самой полезной является Ixp.value – путь URI, полученный сервером для текущего запроса LXP (например, /app/index.lxp).

Кроме того, в переменной lхр .version хранится версия используемого программного пакета LXP, а в переменной Ixp .copy right – информация об авторских правах.

Пользователи, передающие данные документу LXP, не могут передавать переменные с префиксом lхр. в операциях GET и POST. Таким образом, любая переменная, начинающаяся с префикса lхр., является защищенной и может использоваться только в документах LXP и только с тегом <setvar>. Данное свойство помогает защитить конфиденциальную информацию, например результаты парольной аутентификации.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.