PHP 忒聊
綴豖
ヶ輛
梒 35. Returning Values
Returning values from your functions to PHP was described briefly in an earlier section; this section gives the details. Return values are passed via the return_value variable, which is passed to your functions as argument. The return_value argument consists of a zval container (see the earlier discussion of the call interface) that you can freely modify. The container itself is already allocated, so you don't have to run MAKE_STD_ZVAL on it. Instead, you can access its members directly.
To make returning values from functions easier and to prevent hassles with accessing the internal structures of the zval container, a set of predefined macros is available (as usual). These macros automatically set the correspondent type and value, as described in 桶跡 35-1 and 桶跡 35-2.
蛁: The macros in 桶跡 35-1 automatically return from your function, those in 桶跡 35-2 only set the return value; they don't return from your function.
桶跡 35-1. Predefined Macros for Returning Values from a Function
Macro
Description
RETURN_RESOURCE(resource)
Returns a resource.
RETURN_BOOL(bool)
Returns a Boolean.
RETURN_NULL()
Returns nothing (a NULL value).
RETURN_LONG(long)
Returns a long.
RETURN_DOUBLE(double)
Returns a double.
RETURN_STRING(string, duplicate)
Returns a string. The duplicate flag indicates whether the string should be duplicated using estrdup().
RETURN_STRINGL(string, length, duplicate)
Returns a string of the specified length; otherwise, behaves like RETURN_STRING. This macro is faster and binary-safe, however.
RETURN_EMPTY_STRING()
Returns an empty string.
RETURN_FALSE
Returns Boolean false.
RETURN_TRUE
Returns Boolean true.
桶跡 35-2. Predefined Macros for Setting the Return Value of a Function
Macro
Description
RETVAL_RESOURCE(resource)
Sets the return value to the specified resource.
RETVAL_BOOL(bool)
Sets the return value to the specified Boolean value.
RETVAL_NULL
Sets the return value to NULL.
RETVAL_LONG(long)
Sets the return value to the specified long.
RETVAL_DOUBLE(double)
Sets the return value to the specified double.
RETVAL_STRING(string, duplicate)
Sets the return value to the specified string and duplicates it to Zend internal memory if desired (see also RETURN_STRING).
RETVAL_STRINGL(string, length, duplicate)
Sets the return value to the specified string and forces the length to become length (see also RETVAL_STRING). This macro is faster and binary-safe, and should be used whenever the string length is known.
RETVAL_EMPTY_STRING
Sets the return value to an empty string.
RETVAL_FALSE
Sets the return value to Boolean false.
RETVAL_TRUE
Sets the return value to Boolean true.
Complex types such as arrays and objects can be returned by using array_init() and object_init(), as well as the corresponding hash functions on return_value. Since these types cannot be constructed of trivial information, there are no predefined macros for them.
綴豖
れ萸
ヶ輛
Duplicating Variable Contents: The Copy Constructor
奻珨撰
Printing Information