summaryrefslogtreecommitdiff
path: root/ext/mysqlnd/mysqlnd.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/mysqlnd/mysqlnd.c')
-rw-r--r--ext/mysqlnd/mysqlnd.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c
index 7f04d35517..5db03278dc 100644
--- a/ext/mysqlnd/mysqlnd.c
+++ b/ext/mysqlnd/mysqlnd.c
@@ -68,6 +68,7 @@ static struct st_mysqlnd_conn_methods *mysqlnd_conn_methods;
static struct st_mysqlnd_plugin_core mysqlnd_plugin_core;
+static HashTable mysqlnd_api_ext_ht;
/* {{{ mysqlnd_error_list_pdtor */
static void
@@ -92,6 +93,7 @@ PHPAPI void mysqlnd_library_end(TSRMLS_D)
mysqlnd_stats_end(mysqlnd_global_stats);
mysqlnd_global_stats = NULL;
mysqlnd_library_initted = FALSE;
+ zend_hash_destroy(&mysqlnd_api_ext_ht);
}
}
/* }}} */
@@ -2542,10 +2544,46 @@ PHPAPI void mysqlnd_library_init(TSRMLS_D)
mysqlnd_example_plugin_register(TSRMLS_C);
mysqlnd_debug_trace_plugin_register(TSRMLS_C);
mysqlnd_register_builtin_authentication_plugins(TSRMLS_C);
+
+ zend_hash_init(&mysqlnd_api_ext_ht, 3, NULL, NULL, 1);
}
}
/* }}} */
+/* {{{ myslqnd_get_api_extensions */
+PHPAPI HashTable *mysqlnd_get_api_extensions()
+{
+ return &mysqlnd_api_ext_ht;
+}
+/* }}} */
+
+/* {{{ mysqlnd_register_api_extension */
+PHPAPI void mysqlnd_register_api_extension(mysqlnd_api_extension_t *apiext)
+{
+ zend_hash_add(&mysqlnd_api_ext_ht, apiext->module->name, strlen(apiext->module->name)+1, &apiext, sizeof(mysqlnd_api_extension_t), NULL);
+}
+/* }}} */
+
+/* {{{ zval_to_mysqlnd */
+PHPAPI MYSQLND* zval_to_mysqlnd(zval *zv)
+{
+ MYSQLND* retval;
+ mysqlnd_api_extension_t **elem;
+
+ for (zend_hash_internal_pointer_reset(&mysqlnd_api_ext_ht);
+ zend_hash_get_current_data(&mysqlnd_api_ext_ht, (void **)&elem) == SUCCESS;
+ zend_hash_move_forward(&mysqlnd_api_ext_ht)) {
+ if ((*elem)->conversion_cb) {
+ retval = (*elem)->conversion_cb(zv);
+ if (retval) {
+ return retval;
+ }
+ }
+ }
+
+ return NULL;
+}
+/* }}} */
/* {{{ mysqlnd_conn_get_methods */
PHPAPI struct st_mysqlnd_conn_methods * mysqlnd_conn_get_methods()