HASH создает ассоциативный массив, например:
func_odbc.conf:
extensions.conf:
Теперь можно ссылаться на ${HASH(Foo,somefield)} или ${HASH(Foo,someotherfield)}.
Вы даже можете добавить новые значения вот так
Set(HASH(foo,notinthetable)=baz).
В основном, это способ получения нескольких значений из базы данных без
использованием Array(). Можно перечислить каждое поле, но и при этом не создавая в пространстве имен множество ненужных переменных, которые могут привести к неожиданному поведению, например, когда появляется поле таблицы базы данных, имя которого совпадает
с существующей переменной.
Короче говоря, это способ быть в использовать "SELECT *" запрос, причем когда кто-то добавит столбцы к таблице и порядок полей изменится, то функция все равно будет работать.
Источник:http://lists.digium.com/pipermail/asterisk-users/2008-September/218390.html
func_odbc.conf:
[Foo] DSN=MySQL readsql=SELECT * FROM Foo WHERE somefield = '${SQL_ESC(${ARG1})}'
extensions.conf:
Set(HASH(Foo)=${ODBC_FOO(${bar})})
Теперь можно ссылаться на ${HASH(Foo,somefield)} или ${HASH(Foo,someotherfield)}.
Вы даже можете добавить новые значения вот так
Set(HASH(foo,notinthetable)=baz).
В основном, это способ получения нескольких значений из базы данных без
использованием Array(). Можно перечислить каждое поле, но и при этом не создавая в пространстве имен множество ненужных переменных, которые могут привести к неожиданному поведению, например, когда появляется поле таблицы базы данных, имя которого совпадает
с существующей переменной.
Короче говоря, это способ быть в использовать "SELECT *" запрос, причем когда кто-то добавит столбцы к таблице и порядок полей изменится, то функция все равно будет работать.
Источник:http://lists.digium.com/pipermail/asterisk-users/2008-September/218390.html