Skip to content

Commit 3f46e9f

Browse files
committed
Use multi-return type option with objects
1 parent 9b8b714 commit 3f46e9f

File tree

2 files changed

+35
-92
lines changed

2 files changed

+35
-92
lines changed

ext/mysqli/mysqli.stub.php

Lines changed: 11 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -535,17 +535,7 @@ function mysqli_close(mysqli $mysql_link): bool {}
535535

536536
function mysqli_commit(mysqli $mysql_link, int $flags = 0, string $name = ''): bool {}
537537

538-
/**
539-
* @param ?string $host
540-
* @param ?string $user
541-
* @param ?string $password
542-
* @param ?string $database
543-
* @param ?int $port
544-
* @param ?int $flags
545-
*
546-
* @return mysqli|bool
547-
*/
548-
function mysqli_connect(?string $host = null, ?string $user = null, ?string $password = null, ?string $database = null, ?int $port = null, ?string $socket = null) {}
538+
function mysqli_connect(?string $host = null, ?string $user = null, ?string $password = null, ?string $database = null, ?int $port = null, ?string $socket = null): mysqli|bool {}
549539

550540
function mysqli_connect_errno(): int {}
551541

@@ -651,48 +641,19 @@ function mysqli_ping(mysqli $mysqli_link): bool {}
651641

652642
function mysqli_poll(?array &$read, ?array &$write, ?array &$error, int $sec, int $usec = 0): int|bool {}
653643

654-
/**
655-
* @param mysqli $mysqli_link
656-
* @param string $query
657-
*
658-
* @return mysqli_stmt|false
659-
*/
660-
function mysqli_prepare(mysqli $mysqli_link, string $query) {}
644+
function mysqli_prepare(mysqli $mysqli_link, string $query): mysqli_stmt|false {}
661645

662646
function mysqli_report(int $flags): bool {}
663647

664-
/**
665-
* @param mysqli $mysqli_link
666-
* @param string $query
667-
* @param int $resultmode
668-
*
669-
* @return mysqli_result|bool
670-
*/
671-
function mysqli_query(mysqli $mysqli_link, string $query, int $resultmode = MYSQLI_STORE_RESULT) {}
648+
function mysqli_query(mysqli $mysqli_link, string $query, int $resultmode = MYSQLI_STORE_RESULT): mysqli_result|bool {}
672649

673-
/**
674-
* @param mysqli $mysqli_link
675-
* @param ?string $host
676-
* @param ?string $user
677-
* @param ?string $password
678-
* @param ?string $database
679-
* @param ?int $port
680-
* @param ?int $flags
681-
*
682-
* @return mysqli|bool
683-
*/
684-
function mysqli_real_connect(mysqli $mysqli_link, ?string $host = null, ?string $user = null, ?string $password = null, ?string $database = null, ?int $port = null, ?int $flags = null) {}
650+
function mysqli_real_connect(mysqli $mysqli_link, ?string $host = null, ?string $user = null, ?string $password = null, ?string $database = null, ?int $port = null, ?int $flags = null): mysqli|bool {}
685651

686652
function mysqli_real_escape_string(mysqli $mysqli_link, string $escapestr): string|bool {}
687653

688654
function mysqli_real_query(mysqli $mysqli_link, string $query): bool {}
689655

690-
/**
691-
* @param mysqli $mysqli_link
692-
*
693-
* @return mysqli_result|bool
694-
*/
695-
function mysqli_reap_async_query(mysqli $mysqli_link) {}
656+
function mysqli_reap_async_query(mysqli $mysqli_link): mysqli_result|bool {}
696657

697658
function mysqli_release_savepoint(mysqli $mysqli_link, string $name): bool {}
698659

@@ -754,26 +715,11 @@ function mysqli_stmt_field_count(mysqli_stmt $mysql_stmt): int|bool {}
754715
*/
755716
function mysqli_stmt_free_result(mysqli_stmt $mysql_stmt) {}
756717

757-
/**
758-
* @param mysqli_stmt $mysql_stmt
759-
*
760-
* @return mysqli_result|false
761-
*/
762-
function mysqli_stmt_get_result(mysqli_stmt $mysql_stmt) {}
718+
function mysqli_stmt_get_result(mysqli_stmt $mysql_stmt): mysqli_result|false {}
763719

764-
/**
765-
* @param mysqli_stmt $mysql_stmt
766-
*
767-
* @return mysqli_warning|bool
768-
*/
769-
function mysqli_stmt_get_warnings(mysqli_stmt $mysql_stmt) {}
720+
function mysqli_stmt_get_warnings(mysqli_stmt $mysql_stmt): mysqli_warning|bool {}
770721

771-
/**
772-
* @param mysqli $mysql_link
773-
*
774-
* @return mysqli_stmt|false
775-
*/
776-
function mysqli_stmt_init(mysqli $mysql_link) {}
722+
function mysqli_stmt_init(mysqli $mysql_link): mysqli_stmt|false {}
777723

778724
function mysqli_stmt_insert_id(mysqli_stmt $mysql_stmt): int|bool {}
779725

@@ -789,12 +735,7 @@ function mysqli_stmt_prepare(mysqli_stmt $mysql_stmt, string $query): bool {}
789735

790736
function mysqli_stmt_reset(mysqli_stmt $mysql_stmt): bool {}
791737

792-
/**
793-
* @param mysqli_stmt $mysql_stmt
794-
*
795-
* @return mysqli_result|false
796-
*/
797-
function mysqli_stmt_result_metadata(mysqli_stmt $mysql_stmt) {}
738+
function mysqli_stmt_result_metadata(mysqli_stmt $mysql_stmt): mysqli_result|false {}
798739

799740
function mysqli_stmt_send_long_data(mysqli_stmt $mysql_stmt, int $param_nr, string $data): bool {}
800741

@@ -808,24 +749,13 @@ function mysqli_ssl_set(mysqli $mysql_link, string $key, string $cert, string $c
808749

809750
function mysqli_stat(mysqli $mysql_link): string|false {}
810751

811-
/**
812-
* @param mysqli $mysql_link
813-
* @param int $flags
814-
*
815-
* @return mysqli_result|false
816-
*/
817-
function mysqli_store_result(mysqli $mysql_link, int $flags = 0) {}
752+
function mysqli_store_result(mysqli $mysql_link, int $flags = 0): mysqli_result|false {}
818753

819754
function mysqli_thread_id(mysqli $mysql_link): int|bool {}
820755

821756
function mysqli_thread_safe(): bool {}
822757

823-
/**
824-
* @param mysqli $mysql_link
825-
*
826-
* @return mysqli_result|false
827-
*/
828-
function mysqli_use_result(mysqli $mysql_link) {}
758+
function mysqli_use_result(mysqli $mysql_link): mysqli_result|false {}
829759

830760
function mysqli_warning_count(mysqli $mysql_link): int|bool {}
831761

ext/mysqli/mysqli_arginfo.h

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,14 @@ ZEND_END_ARG_INFO()
280280

281281
#define arginfo_mysqli_commit arginfo_mysqli_begin_transaction
282282

283-
#define arginfo_mysqli_connect arginfo_class_mysqli___construct
283+
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_mysqli_connect, 0, 0, mysqli, MAY_BE_BOOL)
284+
ZEND_ARG_TYPE_INFO(0, host, IS_STRING, 1)
285+
ZEND_ARG_TYPE_INFO(0, user, IS_STRING, 1)
286+
ZEND_ARG_TYPE_INFO(0, password, IS_STRING, 1)
287+
ZEND_ARG_TYPE_INFO(0, database, IS_STRING, 1)
288+
ZEND_ARG_TYPE_INFO(0, port, IS_LONG, 1)
289+
ZEND_ARG_TYPE_INFO(0, socket, IS_STRING, 1)
290+
ZEND_END_ARG_INFO()
284291

285292
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_mysqli_connect_errno, 0, 0, IS_LONG, 0)
286293
ZEND_END_ARG_INFO()
@@ -454,7 +461,7 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_mysqli_poll, 0, 4, MAY_BE_LONG|M
454461
ZEND_ARG_TYPE_INFO(0, usec, IS_LONG, 0)
455462
ZEND_END_ARG_INFO()
456463

457-
ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_prepare, 0, 0, 2)
464+
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_mysqli_prepare, 0, 2, mysqli_stmt, MAY_BE_FALSE)
458465
ZEND_ARG_OBJ_INFO(0, mysqli_link, mysqli, 0)
459466
ZEND_ARG_TYPE_INFO(0, query, IS_STRING, 0)
460467
ZEND_END_ARG_INFO()
@@ -463,13 +470,13 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_mysqli_report, 0, 1, _IS_BOOL, 0
463470
ZEND_ARG_TYPE_INFO(0, flags, IS_LONG, 0)
464471
ZEND_END_ARG_INFO()
465472

466-
ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_query, 0, 0, 2)
473+
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_mysqli_query, 0, 2, mysqli_result, MAY_BE_BOOL)
467474
ZEND_ARG_OBJ_INFO(0, mysqli_link, mysqli, 0)
468475
ZEND_ARG_TYPE_INFO(0, query, IS_STRING, 0)
469476
ZEND_ARG_TYPE_INFO(0, resultmode, IS_LONG, 0)
470477
ZEND_END_ARG_INFO()
471478

472-
ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_real_connect, 0, 0, 1)
479+
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_mysqli_real_connect, 0, 1, mysqli, MAY_BE_BOOL)
473480
ZEND_ARG_OBJ_INFO(0, mysqli_link, mysqli, 0)
474481
ZEND_ARG_TYPE_INFO(0, host, IS_STRING, 1)
475482
ZEND_ARG_TYPE_INFO(0, user, IS_STRING, 1)
@@ -486,7 +493,7 @@ ZEND_END_ARG_INFO()
486493

487494
#define arginfo_mysqli_real_query arginfo_mysqli_multi_query
488495

489-
ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_reap_async_query, 0, 0, 1)
496+
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_mysqli_reap_async_query, 0, 1, mysqli_result, MAY_BE_BOOL)
490497
ZEND_ARG_OBJ_INFO(0, mysqli_link, mysqli, 0)
491498
ZEND_END_ARG_INFO()
492499

@@ -566,11 +573,15 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_stmt_free_result, 0, 0, 1)
566573
ZEND_ARG_OBJ_INFO(0, mysql_stmt, mysqli_stmt, 0)
567574
ZEND_END_ARG_INFO()
568575

569-
#define arginfo_mysqli_stmt_get_result arginfo_mysqli_stmt_free_result
576+
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_mysqli_stmt_get_result, 0, 1, mysqli_result, MAY_BE_FALSE)
577+
ZEND_ARG_OBJ_INFO(0, mysql_stmt, mysqli_stmt, 0)
578+
ZEND_END_ARG_INFO()
570579

571-
#define arginfo_mysqli_stmt_get_warnings arginfo_mysqli_stmt_free_result
580+
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_mysqli_stmt_get_warnings, 0, 1, mysqli_warning, MAY_BE_BOOL)
581+
ZEND_ARG_OBJ_INFO(0, mysql_stmt, mysqli_stmt, 0)
582+
ZEND_END_ARG_INFO()
572583

573-
ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_stmt_init, 0, 0, 1)
584+
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_mysqli_stmt_init, 0, 1, mysqli_stmt, MAY_BE_FALSE)
574585
ZEND_ARG_OBJ_INFO(0, mysql_link, mysqli, 0)
575586
ZEND_END_ARG_INFO()
576587

@@ -591,7 +602,7 @@ ZEND_END_ARG_INFO()
591602

592603
#define arginfo_mysqli_stmt_reset arginfo_mysqli_stmt_execute
593604

594-
#define arginfo_mysqli_stmt_result_metadata arginfo_mysqli_stmt_free_result
605+
#define arginfo_mysqli_stmt_result_metadata arginfo_mysqli_stmt_get_result
595606

596607
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_mysqli_stmt_send_long_data, 0, 3, _IS_BOOL, 0)
597608
ZEND_ARG_OBJ_INFO(0, mysql_stmt, mysqli_stmt, 0)
@@ -618,7 +629,7 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_mysqli_stat, 0, 1, MAY_BE_STRING
618629
ZEND_ARG_OBJ_INFO(0, mysql_link, mysqli, 0)
619630
ZEND_END_ARG_INFO()
620631

621-
ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_store_result, 0, 0, 1)
632+
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_mysqli_store_result, 0, 1, mysqli_result, MAY_BE_FALSE)
622633
ZEND_ARG_OBJ_INFO(0, mysql_link, mysqli, 0)
623634
ZEND_ARG_TYPE_INFO(0, flags, IS_LONG, 0)
624635
ZEND_END_ARG_INFO()
@@ -628,7 +639,9 @@ ZEND_END_ARG_INFO()
628639
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_mysqli_thread_safe, 0, 0, _IS_BOOL, 0)
629640
ZEND_END_ARG_INFO()
630641

631-
#define arginfo_mysqli_use_result arginfo_mysqli_stmt_init
642+
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_mysqli_use_result, 0, 1, mysqli_result, MAY_BE_FALSE)
643+
ZEND_ARG_OBJ_INFO(0, mysql_link, mysqli, 0)
644+
ZEND_END_ARG_INFO()
632645

633646
#define arginfo_mysqli_warning_count arginfo_mysqli_affected_rows
634647

0 commit comments

Comments
 (0)