/**
* @param resource $connection_resource
- * @param callable|null $function_name
*/
-function oci_register_taf_callback($connection_resource, $function_name): bool {}
+function oci_register_taf_callback($connection_resource, ?callable $function_name): bool {}
/**
* @param resource $connection_resource
* @return bool
*/
public function trim(int $number) {}
-}
\ No newline at end of file
+}
/* This is a generated file, edit the .stub.php file instead.
- * Stub hash: 157a4128645b816f23fb0bcbbb5860362f446cb3 */
+ * Stub hash: 4a4e86dc175542bbf0bc29c9a957c5dfec834f93 */
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_oci_define_by_name, 0, 3, _IS_BOOL, 0)
ZEND_ARG_INFO(0, statement_resource)
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_oci_register_taf_callback, 0, 2, _IS_BOOL, 0)
ZEND_ARG_INFO(0, connection_resource)
- ZEND_ARG_INFO(0, function_name)
+ ZEND_ARG_TYPE_INFO(0, function_name, IS_CALLABLE, 1)
ZEND_END_ARG_INFO()
#define arginfo_oci_unregister_taf_callback arginfo_oci_rollback
{
zval *z_connection;
php_oci_connection *connection;
- zval *callback;
- zend_string *callback_name;
+ zend_fcall_info fci;
+ zend_fcall_info_cache fcc;
+ zval *callback = NULL;
- /* TODO Use ZPP callable */
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|z!", &z_connection, &callback) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|f!", &z_connection, &fci, &fcc) == FAILURE) {
RETURN_THROWS();
}
- if (callback) {
- if (!zend_is_callable(callback, 0, 0)) {
- callback_name = zend_get_callable_name(callback);
- php_error_docref(NULL, E_WARNING, "Function '%s' is not callable", ZSTR_VAL(callback_name));
- zend_string_release(callback_name);
- RETURN_FALSE;
- }
- }
-
PHP_OCI_ZVAL_TO_CONNECTION(z_connection, connection);
+ /* If callable passed, assign callback zval so that it can be passed to php_oci_register_taf_callback() */
+ if (ZEND_FCI_INITIALIZED(fci)) {
+ callback = &fci.function_name;
+ }
+
if (php_oci_register_taf_callback(connection, callback) == 0) {
RETURN_TRUE;
} else {