编写C++;PHP5.4的扩展,示例代码已过时

编写C++;PHP5.4的扩展,示例代码已过时,php,php-extension,php-internals,Php,Php Extension,Php Internals,我正在尝试为php5.4编写一个扩展,它基本上在CPP中封装了一个非常简单的类 这是为了教育目的 我发现在php5.4中实现这一点的方法已经从php5.3改变了 在哪里可以找到有关如何操作的文档?或者更好的代码示例,任何其他封装CPP类并在php5.4中工作的扩展 例如,过去有用的东西,现在不再有用了。取自 线路 zend\u hash\u copy(obj->std.properties,&type->default\u properties, (复制或功能)zval添加参考(无效*)和tmp

我正在尝试为php5.4编写一个扩展,它基本上在CPP中封装了一个非常简单的类

这是为了教育目的

我发现在php5.4中实现这一点的方法已经从php5.3改变了

在哪里可以找到有关如何操作的文档?或者更好的代码示例,任何其他封装CPP类并在php5.4中工作的扩展

例如,过去有用的东西,现在不再有用了。取自

线路
zend\u hash\u copy(obj->std.properties,&type->default\u properties,
(复制或功能)zval添加参考(无效*)和tmp,尺寸(zval*)

将失败,因为结构实例
类型
(忘记其定义)不再具有成员
默认属性

此页面上的信息是否有帮助

具体来说,为了解决您的
zend\u hash\u copy(对象->标准属性,&type->default\u属性,(复制参数函数)zval\u添加参考,(void*)和tmp,sizeof(zval*)示例,他们建议如下:

#if PHP_VERSION_ID < 50399
    zend_hash_copy(tobj->std.properties, &(class_type->default_properties),
        (copy_ctor_func_t) zval_add_ref, NULL, sizeof(zval*));
#else
    object_properties_init(&tobj->std, class_type);
#endif
#如果PHP_版本_ID<50399
zend_hash_copy(tobj->std.properties,&(class_type->default_properties),
(复制系数函数)zval\u add\u ref,NULL,sizeof(zval*);
#否则
对象属性初始化(&tobj->std,类类型);
#恩迪夫

您最好的资源可能是PHP5.4源代码code@MarkBaker我在CPP方面不是很好,如果有一个特定的扩展已经做到了这一点,将是很大的帮助。否则,是的,我会照你的建议去做。@Marc B那里有很多知识。我会读的,但是从快速阅读中,我看不到任何关于包装CPP类的内容。也许你可以提供一些关于过去工作的细节,以及现在停止工作的原因?
#if PHP_VERSION_ID < 50399
    zend_hash_copy(tobj->std.properties, &(class_type->default_properties),
        (copy_ctor_func_t) zval_add_ref, NULL, sizeof(zval*));
#else
    object_properties_init(&tobj->std, class_type);
#endif