|
Возвращение значений из ваших функций в PHP было кратко описано в предыдущем
разделе; в этом разделе дана информация о деталях. Return-значения передаются
через переменную return_value, которая передаётся в вашу функцию как аргумент. Аргумент
return_value состоит из zval-контейнера (см. ранее обсуждение интерфейса вызова), который вы можете
модифицировать. Это контейнер всегда размещается самостоятельно, поэтому вам
не нужно запускать в нём MAKE_STD_ZVAL. Вместо этого вы можете выполнять прямой доступ к его членам.
Чтобы облегчить возвращение значений из функций и предотвратить нестыковки при
доступе к внутренним структурам zval-контейнера, имеется набор предопределённых макросов (как всегда). Эти макросы
автоматически устанавливают соответствующие тип и значение, как описано в Таблицах 9.14 и 9.15.
Рисунок 36-1. Таблица 9.14. Предопределённые макросы для возвращаемых из функций значений
Примечание: Макрос в Таблице 9.14 автоматически возвращает из вашей функции. |
Макрос | Описание |
RETURN_RESOURCE(resource) | Возвращает ресурс. |
RETURN_BOOL(bool) | Возвращает Boolean. |
RETURN_NULL() | Не возвращает ничего (значение NULL). |
RETURN_LONG(long) | Возвращает long. |
RETURN_DOUBLE(double) | Возвращает double. |
RETURN_STRING(string,duplicate) | Возвращает строку. Флаг
duplicate указывает, должна ли строка дублироваться с использованием estrdup(). |
RETURN_STRINGL(string, length, duplicate) |
Возвращает строку специфицированной длины; иначе поведение аналогично RETURN_STRING. Этот макрос, однако, быстрее и безопасен в двоичном режиме. |
RETURN_EMPTY_STRING() | Возвращает пустую строку. |
RETURN_FALSE | Возвращает Boolean false. |
RETURN_TRUE | Возвращает Boolean true. |
Рисунок 36-2. Таблица 9.15. Предопределённые макросы
для установки Return-значения функции
Примечание: Макросы в Таблице 9.15 только устанавливают return-значение;
они не выполняют возврат из вашей функции. |
Макросы | Описание |
---|
RETVAL_RESOURCE(resource) | Устанавливает return-значение специфицированного ресурса. |
RETVAL_BOOL(bool) | Устанавливает return-значение специфицированного Boolean. |
RETVAL_NULL | Устанавливает return-значение NULL. |
RETVAL_LONG(long) | Устанавливает return-значение специфицированного long. |
RETVAL_DOUBLE(double) | Устанавливает return-значение специфицированного double. |
RETVAL_STRING(string, duplicate) | Устанавливает return-значение специфицированной строки и дублирует его во
внутренней памяти Zend, если нужно (см. также RETURN_STRING). |
RETVAL_STRINGL(string, length, duplicate) |
Устанавливает return-значение специфицированной строки и форсирует длину как length
(см. также RETVAL_STRING). Этот макрос быстрее и безопаснее и должен использоваться, если длина строки
известна. | RETVAL_EMPTY_STRING | Устанавливает return-значение - пустую строку. |
RETVAL_FALSE | Устанавливает return-значение - Boolean false. |
RETVAL_TRUE | Устанавливает return-значение - Boolean true. |
Сложные типы, такие как массивы и объекты, можно возвращать с помощью
array_init() и object_init(), а также соответствующих хэш-функций в return_value.
Поскольку эти типы не могут быть сконструированы из обычной информации, для
них нет предопределённых макросов. | |