| ||||||||||||||||||||||||||||||||||||||||||||||||
Глава 36. Возвращаемые значенияВозвращение значений из ваших функций в PHP было кратко описано в предыдущем разделе; в этом разделе дана информация о деталях. Return-значения передаются через переменную return_value, которая передаётся в вашу функцию как аргумент. Аргумент return_value состоит из zval-контейнера (см. ранее обсуждение интерфейса вызова), который вы можете модифицировать. Этот контейнер всегда размещается самостоятельно, поэтому вам не нужно запускать в нём MAKE_STD_ZVAL. Вместо этого вы можете выполнять прямой доступ к его членам. Чтобы облегчить возвращение значений из функций и предотвратить нестыковки при доступе к внутренним структурам zval-контейнера, имеется набор предопределённых макросов (как всегда). Эти макросы автоматически устанавливают соответствующие тип и значение, как описано в Таблицах 9.14 и 9.15. Рисунок 36-1. Таблица 9.14. Предопределённые макросы для возвращаемых из функций значений
Рисунок 36-2. Таблица 9.15. Предопределённые макросы |
Примечание: Макросы в Таблице 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. Поскольку эти типы не могут быть сконструированы из обычной информации, для них нет предопределённых макросов.
| ||||||
|