Deprecate mysqli::init()

In favor of parent::__construct().

Part of https://wiki.php.net/rfc/deprecations_php_8_1.
This commit is contained in:
Nikita Popov 2021-07-08 12:20:19 +02:00
parent bf0c1ce1a0
commit 625b89af2f
6 changed files with 20 additions and 11 deletions

View File

@ -360,6 +360,9 @@ PHP 8.1 UPGRADE NOTES
mysqli_get_client_info() function has been deprecated. Use
mysqli_get_client_info() without any arguments to obtain the client
library version information.
. The mysqli::init() method has been deprecated. Replace calls to
parent::init() with parent::__construct().
RFC: https://wiki.php.net/rfc/deprecations_php_8_1
- PDO:
. The PDO::FETCH_SERIALIZE mode has been deprecated.

View File

@ -158,7 +158,10 @@ class mysqli
*/
public function get_warnings(): mysqli_warning|false {}
/** @return bool|null */
/**
* @deprecated
* @return bool|null
* */
public function init() {}
/**

View File

@ -1,5 +1,5 @@
/* This is a generated file, edit the .stub.php file instead.
* Stub hash: 2f96f80badee5623220fd720e91aec7795e32723 */
* Stub hash: 3a51cb95700990b4722dfefe341aeeb0b28461d7 */
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_mysqli_affected_rows, 0, 1, MAY_BE_LONG|MAY_BE_STRING)
ZEND_ARG_OBJ_INFO(0, mysql, mysqli, 0)
@ -989,7 +989,7 @@ static const zend_function_entry class_mysqli_methods[] = {
#endif
ZEND_ME_MAPPING(get_server_info, mysqli_get_server_info, arginfo_class_mysqli_get_server_info, ZEND_ACC_PUBLIC)
ZEND_ME_MAPPING(get_warnings, mysqli_get_warnings, arginfo_class_mysqli_get_warnings, ZEND_ACC_PUBLIC)
ZEND_ME(mysqli, init, arginfo_class_mysqli_init, ZEND_ACC_PUBLIC)
ZEND_ME(mysqli, init, arginfo_class_mysqli_init, ZEND_ACC_PUBLIC|ZEND_ACC_DEPRECATED)
ZEND_ME_MAPPING(kill, mysqli_kill, arginfo_class_mysqli_kill, ZEND_ACC_PUBLIC)
ZEND_ME_MAPPING(multi_query, mysqli_multi_query, arginfo_class_mysqli_multi_query, ZEND_ACC_PUBLIC)
ZEND_ME_MAPPING(more_results, mysqli_more_results, arginfo_class_mysqli_more_results, ZEND_ACC_PUBLIC)

View File

@ -13,7 +13,7 @@ require_once('skipifconnectfailure.inc');
class test extends mysqli
{
public function __construct($host, $user, $passwd, $db, $port, $socket) {
parent::init();
parent::__construct();
parent::real_connect($host, $user, $passwd, $db, $port, $socket);
}
}

View File

@ -8,12 +8,15 @@ require_once('skipifconnectfailure.inc');
?>
--FILE--
<?php
require_once("connect.inc");
require_once("connect.inc");
$mysqli = new mysqli();
$mysqli->init();
$mysqli->init();
echo "done";
$mysqli = new mysqli();
$mysqli->init();
$mysqli->init();
echo "done";
?>
--EXPECT--
--EXPECTF--
Deprecated: Method mysqli::init() is deprecated in %s on line %d
Deprecated: Method mysqli::init() is deprecated in %s on line %d
done

View File

@ -92,7 +92,7 @@
$flags = ($enable_env_flags) ? $connect_flags : 0;
if ($flags !== false) {
parent::init();
parent::__construct();
$this->real_connect($host, $user, $passwd, $db, $port, $socket, $flags);
} else {
parent::__construct($host, $user, $passwd, $db, $port, $socket);