Новые книги

Чем важна и интересна эта книга? В первую очередь она позволяет детально разобраться в том, что такое Биткойн, как работает сеть, как создать криптовалютный кошелек и обезопасить его от взлома и много, много другой полезной информации, которой необходимо владеть не только начинающим пользователям, но и продвинутым адептам криптовалют. Книга позволяет:

— познакомиться с биткойном поближе;

— узнать, чем биткойн может оказаться вам полезен;

— усвоить правила безопасности и хранения криптомонет.
Эта серия, написанная в период с 1988 по 1995 года и состоящая из шестнадцати частей, является нетехническим введением в конструирование компиляторов. Серия является руководством по теории и практике разработки синтаксических анализаторов и компиляторов языков программирования. До того как вы закончите чтение этой книги, вы раскроете каждый аспект конструирования компиляторов, разработаете новый язык программирования и создадите работающий компилятор.

Возвращаемые Значения

Учебник РНР
Назад Вперёд

Глава 36. Возвращаемые значения

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


НазадОглавление Вперёд
Дублирование содержимого переменной: конструктор Copy ВверхПечать информации