将php5扩展名移植到php7并将MAKE_STD_ZVAL丢失

时间:2017-01-08 15:38:23

标签: compiler-errors php-7 php-extension

我正在尝试为php7编译php5扩展,但是遇到了MAKE_STD_ZVAL的一些问题,这在php7中似乎不再存在。

我正在尝试编译:php-sweph这使得一些c函数可用于某些天文计算。我没有c专家,我​​只对使这个模块适用于php7感兴趣。那是什么呢? 所有关于MAKE_STD_ZVAL,并想知道我需要改变的方式或内容,以便下面的函数在没有MAKE_STD_ZVAL的情况下工作?

PHP_FUNCTION(swe_houses)
{
   char *arg = NULL;
   int hsys_len, rc;
   char *hsys = NULL;
   double tjd_ut, geolat, geolon;
   double cusps[37], ascmc[10]; 
   int i, houses;
   zval *cusps_arr, *ascmc_arr;

   if(ZEND_NUM_ARGS() != 4) WRONG_PARAM_COUNT;

   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ddds",
        &tjd_ut, &geolat, &geolon, &hsys, &hsys_len) == FAILURE) {
        return;
   }

   if (hsys_len < 1)
        return;

   rc = swe_houses(tjd_ut, geolat, geolon, hsys[0], cusps, ascmc);

   /* create 2 index array, and 1 assoc array */
   array_init(return_value);

   MAKE_STD_ZVAL(cusps_arr);
   array_init(cusps_arr);

   if (hsys[0] == 'G')
       houses = 37;
   else
       houses = 13;

   for(i = 0; i < houses; i++)
       add_index_double(cusps_arr, i, cusps[i]);

       MAKE_STD_ZVAL(ascmc_arr);

       array_init(ascmc_arr);

   for(i = 0; i < 10; i++)

   add_index_double(ascmc_arr, i, ascmc[i]);

   add_assoc_zval(return_value, "cusps", cusps_arr);
   add_assoc_zval(return_value, "ascmc", ascmc_arr);
   add_assoc_long(return_value, "rc", rc);
}

1 个答案:

答案 0 :(得分:0)

this link提到了从php 7更改或删除的宏的详细信息。