Sto provando a scrivere un'estensione per php5.4 che sostanzialmente racchiude una classe molto semplice in CPP.Scrivendo un'estensione C++ per PHP 5.4, il codice di esempio è obsoleto
Questo è per scopi didattici.
Trovo il modo di farlo in php5.4 è cambiato da PHP5.3
Dove posso trovare la documentazione su come farlo? O meglio ancora, esempio di codice, qualsiasi altra estensione che comprenda le classi CPP e funzioni in php5.4
Ad esempio, cosa funzionava e non lo è più. Tratto da http://devzone.zend.com/1435/wrapping-c-classes-in-a-php-extension/
zend_object_value car_create_handler(zend_class_entry *type TSRMLS_DC)
{
zval *tmp;
zend_object_value retval;
car_object *obj = (car_object *)emalloc(sizeof(car_object));
memset(obj, 0, sizeof(car_object));
obj->std.ce = type;
ALLOC_HASHTABLE(obj->std.properties);
zend_hash_init(obj->std.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
zend_hash_copy(obj->std.properties, &type->default_properties,
(copy_ctor_func_t)zval_add_ref, (void *)&tmp, sizeof(zval *));
retval.handle = zend_objects_store_put(obj, NULL,
car_free_storage, NULL TSRMLS_CC);
retval.handlers = &car_object_handlers;
return retval;
}
La linea zend_hash_copy(obj->std.properties, &type->default_properties, (copy_ctor_func_t)zval_add_ref, (void *)&tmp, sizeof(zval *));
falliranno come istanza di struttura type
(dimenticato la sua definizione) non ha più il membro default_properties
probabilmente la miglior risorsa è il codice sorgente PHP5.4 –
@ Mark Baker non sono grandi in CPP, se v'è una specifica estensione che già lo fa, sarebbe di grande aiuto. Altrimenti, sì, farò esattamente quello che suggerisci –
http://php.net/manual/en/internals2.structure.php? –