以下代码是php5中的c ++扩展。
PHP_FUNCTION(fun)
{
char *from = NULL;
char *to = NULL;
int from_len, to_len;
double oldx, oldy;
zval *newx, *newy;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ssddzz", &from, &from_len, &to, &to_len, &oldx, &oldy, &newx, &newy) == FAILURE) {
return;
}
if (!newx->is_ref__gc || !newy->is_ref__gc)
{
printf("newx or newy isn't by ref");
return;
}
convert_to_double(newx);
convert_to_double(newy);
func1(from, to, oldx, oldy, Z_DVAL_P(newx), Z_DVAL_P(newy));
RETURN_LONG(result);
}
void func1(const char *from, const char *to, double oldx, double oldy, double &newx, double &newy)
{
modify the values of newx and newy here
...
}
我们可以使用此扩展程序获取$ x,$ y的修改值:
func("abc", "sfsrf", 110.89889, 32.64534534 , $x, $y);
你不需要关心“来自”,“来”,“oldx”和“oldy”。它们仅用于修改x $和$ y。
这些代码在php5中运行良好。但是,它在php7中不起作用。例如,php7中不存在is_ref__gc。当然,还有很多其他问题。
如何修改此扩展以在php7中使用它。而且我不想修改fun()的界面。