как конвертировать zval * в объект? - PullRequest
0 голосов
/ 15 сентября 2011

У меня есть:

PHP_METHOD(Car, cls_ref)
{
    Car *car;
    //Car2 *obj11;
    Car2 *car2;
    zval* obj11;
    zend_class_entry ce2 = zend_fetch_class("Car2", sizeof("Car2")-1, ZEND_FETCH_CLASS_DEFAULT TSRMLS_CC);


     if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O", &obj11,ce2) == FAILURE) {
        RETURN_NULL();
    }

    car_object *obj = (car_object *)zend_object_store_get_object(
        getThis() TSRMLS_CC);
  /*  car2_object *objj = (car2_object *)zend_object_store_get_object(
        getThis() TSRMLS_CC);
       car2=(objj->car2);
    */  
    car = obj->car;
    if (car != NULL) {
        //cout<<"in car 2 ref"<<endl;

        //car2->reference(s);
    //  (car->cls_ref((Car2&)car2));
    car->cls_ref((Car2&)obj11);
    }

}

where void Car::cls_ref(Car2 &obj){...}

Я, чтобы решить это.У меня ошибка:

ошибка: невозможно преобразовать 'Car2 *' в 'zval *' при инициализации /home/vehicles.cc:191: ошибка: преобразование из 'zend_class_entry *' в нескалярный типЗапрошено «zend_class_entry» (ошибки находятся в момент, когда я инициализирую obj11 и в ce2 = ..)

1 Ответ

1 голос
/ 21 октября 2011

Используйте API convert_to_object_ex (значение) для преобразования zval в объект. Здесь значение имеет тип ** zval.

-Gaurav

...