Профессиональное программирование на PHP

Страница 494 из 591


512 Глава 21 Расширение РНР: часть I

Окончание табл. 21.2

Формат

Тип

Принимает

а

Массив

zval **

о

Объект

zval **

0

Объект (определенного типа)

zval **, type name

z

zval

zval **

Например, для того чтобы указать, что функция принимает две строки и длинное целое число (long), используется следующий код:

PHP_FUNCTION(s t rnc a s e cmp) {

char *stringl, *string2;

int string_lengthl, string_length2;

long comp_length;

if(zend_parse_parameters(ZEND_NUM_ARG() TSRMLS_CC, "ssl",

&stringl, &string_lengthl, &string2, &string_length2, &comp_length) {

return;

}

}

В данном примере для каждой строки задается пара char **/int *, а также тип long * для длинного целого числа.

В дополнение к этому можно указать модификаторы строки формата, которые позволяют задавать необязательные аргументы, используя модификаторы параметров (см. табл. 21.3).

Таблица 21.3. Модификаторы параметров функции zend_parse_parameters О

Модификаторы Описание параметров

I Аргумент, следующий после |, является необязательным

 Предшествующий параметр может быть указанного типа или

NULL. Если передается NULL, то связанный С-указатель также устанавливается в NULL. Этот модификатор подходит только для типов, которые возвращают zval-типы — типы а, о, О, г и г

/ Предшествующий параметр должен быть отделен, то есть, ес-

ли счетчик ссылок на переменную больше 1, то ее данные должны быть скопированы в новую zva 1-структуру. Модификатор хорошо подходит, когда модифицируется zval (например, для принудительного преобразования типов), а влияние на других пользователей нежелательно. Модификатор пригоден только для типов а, о, О, г и z




  Hostland.Ru

 «Бесплатный хостинг Hostland.Su» © 2006