- LDAP:
. The deprecated function ldap_sort has been removed.
+ . The interface of ldap_set_rebind_proc has changed; the $callback parameter
+ does not accept empty string anymore; null value shall be used instead.
- Mbstring:
. The mbstring.func_overload directive has been removed. The related
}
/* }}} */
-/* {{{ proto bool ldap_set_rebind_proc(resource link, string callback)
+/* {{{ proto bool ldap_set_rebind_proc(resource link, ?callable callback)
Set a callback function to do re-binds on referral chasing. */
PHP_FUNCTION(ldap_set_rebind_proc)
{
RETURN_THROWS();
}
- if (Z_TYPE_P(callback) == IS_STRING && Z_STRLEN_P(callback) == 0) {
+ if (Z_TYPE_P(callback) == IS_NULL) {
/* unregister rebind procedure */
if (!Z_ISUNDEF(ld->rebindproc)) {
zval_ptr_dtor(&ld->rebindproc);
/* callable? */
if (!zend_is_callable(callback, 0, NULL)) {
- zend_string *callback_name = zend_get_callable_name(callback);
- php_error_docref(NULL, E_WARNING, "Two arguments expected for '%s' to be a valid callback", ZSTR_VAL(callback_name));
- zend_string_release_ex(callback_name, 0);
- RETURN_FALSE;
+ zend_argument_type_error(2, "must be a valid callback or null, %s given", zend_zval_type_name(callback));
+ RETURN_THROWS();
}
/* register rebind procedure */
#if defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC)
/**
* @param resource $link
- * @param callable $callback
*/
-function ldap_set_rebind_proc($link, $callback): bool {}
+function ldap_set_rebind_proc($link, ?callable $callback): bool {}
#endif
#ifdef HAVE_LDAP_START_TLS_S
/* This is a generated file, edit the .stub.php file instead.
- * Stub hash: 53051e130a22dc519676c7a91529d2f9f7d1e6ad */
+ * Stub hash: c9ce0e98ab386130b6332ae017808bec67b1cd07 */
#if defined(HAVE_ORALDAP)
ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_connect, 0, 0, 0)
#if defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC)
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ldap_set_rebind_proc, 0, 2, _IS_BOOL, 0)
ZEND_ARG_INFO(0, link)
- ZEND_ARG_INFO(0, callback)
+ ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 1)
ZEND_END_ARG_INFO()
#endif
$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
var_dump(ldap_set_rebind_proc($link, "rebind_proc"));
-var_dump(ldap_set_rebind_proc($link, ""));
+var_dump(ldap_set_rebind_proc($link, null));
?>
--EXPECT--
bool(true)
}
$link = ldap_connect($host, $port);
-var_dump(ldap_set_rebind_proc($link, "rebind_proc_inexistent"));
+try {
+ $result = ldap_set_rebind_proc($link, "rebind_proc_inexistent");
+} catch(\TypeError $error) {
+ echo $error->getMessage(), "\n";
+}
?>
--EXPECTF--
-Warning: ldap_set_rebind_proc(): Two arguments expected for 'rebind_proc_inexistent' to be a valid callback in %s on line %d
-bool(false)
+ldap_set_rebind_proc(): Argument #2 ($callback) must be a valid callback or null, string given