zend variables string KXD6LVT62KSBVWQ6SLBQNXDPLD5YO4ANBKKKUFY


StringsPodręcznik PHPPoprzedniRozdział 33. Creating VariablesNastępnyStrings Strings need slightly more effort. As mentioned earlier, all strings that will be associated with Zend's internal data structures need to be allocated using Zend's own memory-management functions. Referencing of static strings or strings allocated with standard routines is not allowed. To assign strings, you have to access the structure str in the zval.value container. The corresponding type is IS_STRING: zval *new_string; char *string_contents = "This is a new string variable"; MAKE_STD_ZVAL(new_string); new_string->type = IS_STRING; new_string->value.str.len = strlen(string_contents); new_string->value.str.val = estrdup(string_contents); Note the usage of Zend's estrdup() here. Of course, you can also use the predefined macro ZVAL_STRING: zval *new_string; char *string_contents = "This is a new string variable"; MAKE_STD_ZVAL(new_string); ZVAL_STRING(new_string, string_contents, 1); ZVAL_STRING accepts a third parameter that indicates whether the supplied string contents should be duplicated (using estrdup()). Setting this parameter to 1 causes the string to be duplicated; 0 simply uses the supplied pointer for the variable contents. This is most useful if you want to create a new variable referring to a string that's already allocated in Zend internal memory. If you want to truncate the string at a certain position or you already know its length, you can use ZVAL_STRINGL(zval, string, length, duplicate), which accepts an explicit string length to be set for the new string. This macro is faster than ZVAL_STRING and also binary-safe. To create empty strings, set the string length to 0 and use empty_string as contents: new_string->type = IS_STRING; new_string->value.str.len = 0; new_string->value.str.val = empty_string; Of course, there's a macro for this as well (ZVAL_EMPTY_STRING): MAKE_STD_ZVAL(new_string); ZVAL_EMPTY_STRING(new_string); PoprzedniSpis treściNastępnyDoubles (Floats)Początek rozdziałuBooleans

Wyszukiwarka

Podobne podstrony:
zend variables boolean
zend variables object
zend variables
zend layout string handling
zend variables global
zend variables float
zend variables resource
zend variables constant
zend variables long
zend variables array
zend variables array
zend arguments variable

więcej podobnych podstron