PHP扩展中如何获得并实例化PHP空间定义的类?

发布于 2022-09-05 05:31:53 字数 1293 浏览 23 评论 0

PHP扩展中如何获得并实例化PHP空间定义的类?
我的代码是这样的

    zval *obj;
    MAKE_STD_ZVAL(obj);
    zend_class_entry *foo_ce;
    //hashtable_foreach_print(EG(class_table));

    if( zend_hash_find( EG(class_table), "foo", sizeof("foo"), (void **)&foo_ce ) == SUCCESS ){
        printf("get foo success\n");
        object_init_ex(obj, foo_ce);    
    } else {
        printf("get class failed\n");
    }
    printf("haloeffesfes");

但是执行到object_init_ex的时候报错了!GDB调试的结果是:

#0  0x0000000000925038 in zend_hash_apply_deleter (ht=0xfac750, p=0x120b980) at /root/php-5.5.38/Zend/zend_hash.c:619
#1  0x00000000009257b2 in zend_hash_reverse_apply (ht=0xfac750, apply_func=0x8fe67f <clean_non_persistent_class>) at /root/php-5.5.38/Zend/zend_hash.c:804
#2  0x00000000008fec25 in shutdown_executor () at /root/php-5.5.38/Zend/zend_execute_API.c:300
#3  0x000000000091297d in zend_deactivate () at /root/php-5.5.38/Zend/zend.c:946
#4  0x000000000088c26f in php_request_shutdown (dummy=0x0) at /root/php-5.5.38/main/main.c:1813
#5  0x00000000009bc433 in do_cli (argc=2, argv=0xfabb10) at /root/php-5.5.38/sapi/cli/php_cli.c:1177
#6  0x00000000009bcabb in main (argc=2, argv=0xfabb10) at /root/php-5.5.38/sapi/cli/php_cli.c:1378

这如何解决?

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文