Re: Translating optional zval ** with zend_parse_parameters() to PHP 7

From: Date: Fri, 25 Nov 2016 07:27:24 +0000
Subject: Re: Translating optional zval ** with zend_parse_parameters() to PHP 7
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-97170@lists.php.net to get a copy of this message
Hi Thomas 2016-11-25 4:13 GMT+01:00 Thomas Hruska <thruska@cubiclesoft.com>: > I'm working on updating an extension for PHP 7 compatibility. I have one > function that uses an optional zval ** with zend_parse_parameters(). > > zval **zprevcount = NULL; > int count; > int argc = ZEND_NUM_ARGS(); > > if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|Z", > &zprevcount) == FAILURE) return; > > ... > > if (argc > 0) > { > count = (int)PrevCount; > > zval_dtor(*zprevcount); > ZVAL_LONG(*zprevcount, count); > } > > What's the correct way to translate that into PHP 7? Since you are working with integers, you can do: zend_long prevcount = 0; if(zend_parse_parameters(ZEND_NUM_ARGS(), "|l", &prevcount) == FAILURE) { return; } if(prevcount) { /* ... use prevcount ... */ } Notice that all integers returned from the ZPP is a zend_long, you can see more information about the ZPP in php-src/README.PARAMETER_PARSING_API -- regards, Kalle Sommer Nielsen kalle@php.net

« previous php.internals (#97170) next »