|
Возвращение значений из ваших функций в 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.
Поскольку эти типы не могут быть сконструированы из обычной информации, для
них нет предопределённых макросов.
|
|