小编Joh*_*ial的帖子

如何从PHP扩展返回C++对象数组

我需要让我的PHP扩展返回一个对象数组,但我似乎无法弄清楚如何做到这一点.

我有一个Graph用C++编写的对象.Graph.getNodes()返回一个std::map<int, Node*>.这是我目前的代码:

struct node_object {
        zend_object std;
        Node *node;
};

zend_class_entry *node_ce;

然后

PHP_METHOD(Graph, getNodes)
{
        Graph *graph;
        GET_GRAPH(graph, obj) // a macro I wrote to populate graph

        node_object* n;
        zval* node_zval;

        if (obj == NULL) {
                RETURN_NULL();
        }   

        if (object_init_ex(node_zval, node_ce) != SUCCESS) {
                RETURN_NULL();
        }   


        std::map nodes = graph->getNodes();

        array_init(return_value);

        for (std::map::iterator i = nodes.begin(); i != nodes.end(); ++i) {
                php_printf("X");
                n = (node_object*) zend_object_store_get_object(node_zval TSRMLS_CC);
                n->node = i- …

php c++ arrays object php-extension

2
推荐指数
1
解决办法
1796
查看次数

标签 统计

arrays ×1

c++ ×1

object ×1

php ×1

php-extension ×1