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

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


Основы создания расширений 513

Другие RETURN-макросы

Выше были рассмотрены два RETURN-макроса, RETURN_STRINGL и RETURN LONG, которые устанавливают значение return_value и возвращают его. В табл. 21.4 перечислены все RETURN-макросы.

Таблица 21.4. RETURN-макросы

Макрос

Описание

RETURNJ300L(zend_bool value)

RE TURN_NULL() RE TURN_TRUE() RETURN_FALSE() RETURN_LONG(long value)

RETURN_DOUBLE(double value)

RETURN_EMPTY_STRING()

RETURN_STRING(char *string, int duplicate)

RETURN_STRINGL(char ■ *string, int length, int duplicate)

Устанавливает return_value из булева значения value

Устанавливает return_value равным null

Устанавливает return_value равным true

Устанавливает return_value равным false

Устанавливает return_value равным длинному целому числу value

Устанавливает return_value равным числу с плавающей точкой value

Устанавливает return_value равным пустой строке "" Устанавливает return_value равным строке из символьного буфера string и флаг, указывающий на необходимость непосредственного .использования буфера или копирования буфера. Макрос небезопасен в использовании с двоичными данными; в нем используется функция strlen () для вычисления длины строки string

Устанавливает return_value равным строке из символьного буфера string заданной длины length, а также флаг, указывающий на необходимость непосредственного использования буфера или копирования буфера. Макрос безопасен в использовании с двоичными данными

Манипулирование типами

Чтобы уметь задавать более сложные значения return_value, необходимо понимать, как манипулировать zval-типами. Как описывалось в главе 20, все переменные в РНР представлены типом zval, который представляет собой композицию из всех возможных базовых PHP-типов. Это дает возможность реализовать слабую и динамическую типизациюв РНР.

Когда требуется создать переменную, которой будет манипулировать РНР-интерпретатор, она должна иметь тип zval. Обычный процесс создания переменной заключается в ее объявлении и выделении для нее памяти с помощью встроенного макроса, см. пример ниже.

zval *var; MAKE_STD_ZVAL(var);




  Hostland.Ru

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