如何将 zval* 转换为对象?

发布于 2024-12-04 10:59:47 字数 1063 浏览 0 评论 0原文

我有:

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=.. 的位置)

I have:

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){...}

I to solve this. I have error:

error: cannot convert ‘Car2*’ to ‘zval*’ in initialization
/home/vehicles.cc:191: error: conversion from ‘zend_class_entry*’ to non-scalar type ‘zend_class_entry’ requested `(the errors are at the point where i intialize obj11 and at ce2=..)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

未蓝澄海的烟 2024-12-11 10:59:47

使用 API Convert_to_object_ex(value) 将 zval 转换为对象。这里,value 的类型是 **zval。

-高拉夫

Use the API convert_to_object_ex(value) to convert zval to object. Here, value is of type **zval.

-Gaurav

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文