Skip to content

Commit 857850b

Browse files
committed
Generate class entries from stubs for ldap, libxml, mbstring and mysqli
1 parent f74a02d commit 857850b

File tree

10 files changed

+461
-83
lines changed

10 files changed

+461
-83
lines changed

ext/ldap/ldap.stub.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
/** @generate-function-entries */
3+
/** @generate-class-entries */
44

55
#ifdef HAVE_ORALDAP
66
/** @return resource|false */

ext/ldap/ldap_arginfo.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: 9d6315aeee2e3a1be51c05b65a960ed433bbe4ec */
2+
* Stub hash: 056fa51afdd7d40f9866ebd67837f5ddfa2c6236 */
33

44
#if defined(HAVE_ORALDAP)
55
ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_connect, 0, 0, 0)
@@ -538,3 +538,4 @@ static const zend_function_entry ext_functions[] = {
538538
#endif
539539
ZEND_FE_END
540540
};
541+

ext/libxml/libxml.stub.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<?php
22

33
/** @generate-class-entries */
4+
45
class LibXMLError
56
{
67
public int $level;

ext/libxml/libxml_arginfo.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: f07180b33955d802c40f3f52f6199605508df87b */
2+
* Stub hash: 252fdc1cd83d2d3322cc040baf2bf3c7fde29254 */
33

44
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_libxml_set_streams_context, 0, 1, IS_VOID, 0)
55
ZEND_ARG_INFO(0, context)

ext/mbstring/mbstring.stub.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
/** @generate-function-entries */
3+
/** @generate-class-entries */
44

55
function mb_language(?string $language = null): string|bool {}
66

ext/mbstring/mbstring_arginfo.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: 51f0769423c046d612adf81091192165ad265456 */
2+
* Stub hash: eef196b29323ceb0a5d67703e62b11d0004c615b */
33

44
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_mb_language, 0, 0, MAY_BE_STRING|MAY_BE_BOOL)
55
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, language, IS_STRING, 1, "null")
@@ -490,3 +490,4 @@ static const zend_function_entry ext_functions[] = {
490490
#endif
491491
ZEND_FE_END
492492
};
493+

ext/mysqli/mysqli.c

Lines changed: 19 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -530,8 +530,6 @@ static PHP_GINIT_FUNCTION(mysqli)
530530
/* {{{ PHP_MINIT_FUNCTION */
531531
PHP_MINIT_FUNCTION(mysqli)
532532
{
533-
zend_class_entry *ce,cex;
534-
535533
REGISTER_INI_ENTRIES();
536534
#ifndef MYSQLI_USE_MYSQLND
537535
if (mysql_server_init(0, NULL, NULL)) {
@@ -564,86 +562,38 @@ PHP_MINIT_FUNCTION(mysqli)
564562
le_pmysqli = zend_register_list_destructors_ex(NULL, php_mysqli_dtor,
565563
"MySqli persistent connection", module_number);
566564

567-
INIT_CLASS_ENTRY(cex, "mysqli_sql_exception", class_mysqli_sql_exception_methods);
568-
mysqli_exception_class_entry = zend_register_internal_class_ex(&cex, spl_ce_RuntimeException);
569-
mysqli_exception_class_entry->ce_flags |= ZEND_ACC_FINAL;
570-
zend_declare_property_long(mysqli_exception_class_entry, "code", sizeof("code")-1, 0, ZEND_ACC_PROTECTED);
571-
zend_declare_property_string(mysqli_exception_class_entry, "sqlstate", sizeof("sqlstate")-1, "00000", ZEND_ACC_PROTECTED);
565+
mysqli_exception_class_entry = register_class_mysqli_sql_exception(spl_ce_RuntimeException);
572566

573-
REGISTER_MYSQLI_CLASS_ENTRY("mysqli_driver", mysqli_driver_class_entry, class_mysqli_driver_methods);
574-
ce = mysqli_driver_class_entry;
567+
mysqli_driver_class_entry = register_class_mysqli_driver();
568+
mysqli_driver_class_entry->create_object = mysqli_objects_new;
575569
zend_hash_init(&mysqli_driver_properties, 0, NULL, free_prop_handler, 1);
576570
MYSQLI_ADD_PROPERTIES(&mysqli_driver_properties, mysqli_driver_property_entries);
577-
zend_declare_property_null(ce, "client_info", sizeof("client_info") - 1, ZEND_ACC_PUBLIC);
578-
zend_declare_property_null(ce, "client_version", sizeof("client_version") - 1, ZEND_ACC_PUBLIC);
579-
zend_declare_property_null(ce, "driver_version", sizeof("driver_version") - 1, ZEND_ACC_PUBLIC);
580-
zend_declare_property_null(ce, "reconnect", sizeof("reconnect") - 1, ZEND_ACC_PUBLIC);
581-
zend_declare_property_null(ce, "report_mode", sizeof("report_mode") - 1, ZEND_ACC_PUBLIC);
582-
ce->ce_flags |= ZEND_ACC_FINAL;
583-
zend_hash_add_ptr(&classes, ce->name, &mysqli_driver_properties);
584-
585-
REGISTER_MYSQLI_CLASS_ENTRY("mysqli", mysqli_link_class_entry, class_mysqli_methods);
586-
ce = mysqli_link_class_entry;
571+
zend_hash_add_ptr(&classes, mysqli_driver_class_entry->name, &mysqli_driver_properties);
572+
573+
mysqli_link_class_entry = register_class_mysqli();
574+
mysqli_link_class_entry->create_object = mysqli_objects_new;
587575
zend_hash_init(&mysqli_link_properties, 0, NULL, free_prop_handler, 1);
588576
MYSQLI_ADD_PROPERTIES(&mysqli_link_properties, mysqli_link_property_entries);
589-
zend_declare_property_null(ce, "affected_rows", sizeof("affected_rows") - 1, ZEND_ACC_PUBLIC);
590-
zend_declare_property_null(ce, "client_info", sizeof("client_info") - 1, ZEND_ACC_PUBLIC);
591-
zend_declare_property_null(ce, "client_version", sizeof("client_version") - 1, ZEND_ACC_PUBLIC);
592-
zend_declare_property_null(ce, "connect_errno", sizeof("connect_errno") - 1, ZEND_ACC_PUBLIC);
593-
zend_declare_property_null(ce, "connect_error", sizeof("connect_error") - 1, ZEND_ACC_PUBLIC);
594-
zend_declare_property_null(ce, "errno", sizeof("errno") - 1, ZEND_ACC_PUBLIC);
595-
zend_declare_property_null(ce, "error", sizeof("error") - 1, ZEND_ACC_PUBLIC);
596-
zend_declare_property_null(ce, "error_list", sizeof("error_list") - 1, ZEND_ACC_PUBLIC);
597-
zend_declare_property_null(ce, "field_count", sizeof("field_count") - 1, ZEND_ACC_PUBLIC);
598-
zend_declare_property_null(ce, "host_info", sizeof("host_info") - 1, ZEND_ACC_PUBLIC);
599-
zend_declare_property_null(ce, "info", sizeof("info") - 1, ZEND_ACC_PUBLIC);
600-
zend_declare_property_null(ce, "insert_id", sizeof("insert_id") - 1, ZEND_ACC_PUBLIC);
601-
zend_declare_property_null(ce, "server_info", sizeof("server_info") - 1, ZEND_ACC_PUBLIC);
602-
zend_declare_property_null(ce, "server_version", sizeof("server_version") - 1, ZEND_ACC_PUBLIC);
603-
zend_declare_property_null(ce, "sqlstate", sizeof("sqlstate") - 1, ZEND_ACC_PUBLIC);
604-
zend_declare_property_null(ce, "protocol_version", sizeof("protocol_version") - 1, ZEND_ACC_PUBLIC);
605-
zend_declare_property_null(ce, "thread_id", sizeof("thread_id") - 1, ZEND_ACC_PUBLIC);
606-
zend_declare_property_null(ce, "warning_count", sizeof("warning_count") - 1, ZEND_ACC_PUBLIC);
607-
zend_hash_add_ptr(&classes, ce->name, &mysqli_link_properties);
608-
609-
REGISTER_MYSQLI_CLASS_ENTRY("mysqli_warning", mysqli_warning_class_entry, class_mysqli_warning_methods);
610-
ce = mysqli_warning_class_entry;
611-
ce->ce_flags |= ZEND_ACC_FINAL;
577+
zend_hash_add_ptr(&classes, mysqli_link_class_entry->name, &mysqli_link_properties);
578+
579+
mysqli_warning_class_entry = register_class_mysqli_warning();
580+
mysqli_warning_class_entry->create_object = mysqli_objects_new;
612581
zend_hash_init(&mysqli_warning_properties, 0, NULL, free_prop_handler, 1);
613582
MYSQLI_ADD_PROPERTIES(&mysqli_warning_properties, mysqli_warning_property_entries);
614-
zend_declare_property_null(ce, "message", sizeof("message") - 1, ZEND_ACC_PUBLIC);
615-
zend_declare_property_null(ce, "sqlstate", sizeof("sqlstate") - 1, ZEND_ACC_PUBLIC);
616-
zend_declare_property_null(ce, "errno", sizeof("errno") - 1, ZEND_ACC_PUBLIC);
617-
zend_hash_add_ptr(&classes, ce->name, &mysqli_warning_properties);
583+
zend_hash_add_ptr(&classes, mysqli_warning_class_entry->name, &mysqli_warning_properties);
618584

619-
REGISTER_MYSQLI_CLASS_ENTRY("mysqli_result", mysqli_result_class_entry, class_mysqli_result_methods);
620-
ce = mysqli_result_class_entry;
585+
mysqli_result_class_entry = register_class_mysqli_result(zend_ce_aggregate);
586+
mysqli_result_class_entry->create_object = mysqli_objects_new;
587+
mysqli_result_class_entry->get_iterator = php_mysqli_result_get_iterator;
621588
zend_hash_init(&mysqli_result_properties, 0, NULL, free_prop_handler, 1);
622589
MYSQLI_ADD_PROPERTIES(&mysqli_result_properties, mysqli_result_property_entries);
623-
zend_declare_property_null(ce, "current_field", sizeof("current_field") - 1,ZEND_ACC_PUBLIC);
624-
zend_declare_property_null(ce, "field_count", sizeof("field_count") - 1, ZEND_ACC_PUBLIC);
625-
zend_declare_property_null(ce, "lengths", sizeof("lengths") - 1, ZEND_ACC_PUBLIC);
626-
zend_declare_property_null(ce, "num_rows", sizeof("num_rows") - 1, ZEND_ACC_PUBLIC);
627-
zend_declare_property_null(ce, "type", sizeof("type") - 1, ZEND_ACC_PUBLIC);
628-
mysqli_result_class_entry->get_iterator = php_mysqli_result_get_iterator;
629-
zend_class_implements(mysqli_result_class_entry, 1, zend_ce_aggregate);
630-
zend_hash_add_ptr(&classes, ce->name, &mysqli_result_properties);
590+
zend_hash_add_ptr(&classes, mysqli_result_class_entry->name, &mysqli_result_properties);
631591

632-
REGISTER_MYSQLI_CLASS_ENTRY("mysqli_stmt", mysqli_stmt_class_entry, class_mysqli_stmt_methods);
633-
ce = mysqli_stmt_class_entry;
592+
mysqli_stmt_class_entry = register_class_mysqli_stmt();
593+
mysqli_stmt_class_entry->create_object = mysqli_objects_new;
634594
zend_hash_init(&mysqli_stmt_properties, 0, NULL, free_prop_handler, 1);
635595
MYSQLI_ADD_PROPERTIES(&mysqli_stmt_properties, mysqli_stmt_property_entries);
636-
zend_declare_property_null(ce, "affected_rows", sizeof("affected_rows") - 1, ZEND_ACC_PUBLIC);
637-
zend_declare_property_null(ce, "insert_id", sizeof("insert_id") - 1, ZEND_ACC_PUBLIC);
638-
zend_declare_property_null(ce, "num_rows", sizeof("num_rows") - 1, ZEND_ACC_PUBLIC);
639-
zend_declare_property_null(ce, "param_count", sizeof("param_count") - 1, ZEND_ACC_PUBLIC);
640-
zend_declare_property_null(ce, "field_count", sizeof("field_count") - 1, ZEND_ACC_PUBLIC);
641-
zend_declare_property_null(ce, "errno", sizeof("errno") - 1, ZEND_ACC_PUBLIC);
642-
zend_declare_property_null(ce, "error", sizeof("error") - 1, ZEND_ACC_PUBLIC);
643-
zend_declare_property_null(ce, "error_list", sizeof("error_list") - 1, ZEND_ACC_PUBLIC);
644-
zend_declare_property_null(ce, "sqlstate", sizeof("sqlstate") - 1, ZEND_ACC_PUBLIC);
645-
zend_declare_property_null(ce, "id", sizeof("id") - 1, ZEND_ACC_PUBLIC);
646-
zend_hash_add_ptr(&classes, ce->name, &mysqli_stmt_properties);
596+
zend_hash_add_ptr(&classes, mysqli_stmt_class_entry->name, &mysqli_stmt_properties);
647597

648598
/* mysqli_options */
649599
REGISTER_LONG_CONSTANT("MYSQLI_READ_DEFAULT_GROUP", MYSQL_READ_DEFAULT_GROUP, CONST_CS | CONST_PERSISTENT);

ext/mysqli/mysqli.stub.php

Lines changed: 122 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,78 @@
11
<?php
22

3-
/** @generate-function-entries */
3+
/** @generate-class-entries */
44

55
final class mysqli_driver
66
{
7+
/** @var string|null */
8+
public $client_info;
9+
10+
/** @var string|null */
11+
public $driver_version;
12+
13+
/** @var bool|null */
14+
public $reconnect;
15+
16+
/** @var int|null */
17+
public $report_mode;
718
}
819

920
class mysqli
1021
{
22+
/** @var int|null */
23+
public $affected_rows;
24+
25+
/** @var string|null */
26+
public $client_info;
27+
28+
/** @var string|null */
29+
public $client_version;
30+
31+
/** @var int|null */
32+
public $connect_errno;
33+
34+
/** @var string|null */
35+
public $connect_error;
36+
37+
/** @var int|null */
38+
public $errno;
39+
40+
/** @var string|null */
41+
public $error;
42+
43+
/** @var array|null */
44+
public $error_list;
45+
46+
/** @var int|null */
47+
public $field_count;
48+
49+
/** @var string|null */
50+
public $host_info;
51+
52+
/** @var string|null */
53+
public $info;
54+
55+
/** @var mixed */
56+
public $insert_id;
57+
58+
/** @var string|null */
59+
public $server_info;
60+
61+
/** @var string|null */
62+
public $server_version;
63+
64+
/** @var string|null */
65+
public $sqlstate;
66+
67+
/** @var string|null */
68+
public $protocol_version;
69+
70+
/** @var string|null */
71+
public $thread_id;
72+
73+
/** @var int|null */
74+
public $arning_count;
75+
1176
public function __construct(
1277
?string $hostname = null,
1378
?string $username = null,
@@ -302,6 +367,21 @@ public function refresh(int $flags) {}
302367

303368
class mysqli_result implements IteratorAggregate
304369
{
370+
/** @var string|null */
371+
public $current_field;
372+
373+
/** @var int|null */
374+
public $field_count;
375+
376+
/** @var int|null */
377+
public $lengths;
378+
379+
/** @var int|null */
380+
public $num_rows;
381+
382+
/** @var string|null */
383+
public $type;
384+
305385
public function __construct(mysqli $mysql, int $result_mode = MYSQLI_STORE_RESULT) {}
306386

307387
/**
@@ -387,6 +467,36 @@ public function getIterator(): Iterator;
387467

388468
class mysqli_stmt
389469
{
470+
/** @var int|null */
471+
public $affected_rows;
472+
473+
/** @var int|null */
474+
public $insert_id;
475+
476+
/** @var int|null */
477+
public $num_rows;
478+
479+
/** @var int|null */
480+
public $param_count;
481+
482+
/** @var int|null */
483+
public $field_count;
484+
485+
/** @var int|null */
486+
public $errno;
487+
488+
/** @var string|null */
489+
public $error;
490+
491+
/** @var array|null */
492+
public $error_list;
493+
494+
/** @var string|null */
495+
public $sqlstate;
496+
497+
/** @var string|null */
498+
public $id;
499+
390500
public function __construct(mysqli $mysql, ?string $query = null) {}
391501

392502
/**
@@ -510,13 +620,24 @@ public function get_result() {}
510620

511621
final class mysqli_warning
512622
{
623+
/** @var string|null */
624+
public $message;
625+
626+
/** @var string|null */
627+
public $sqlstate;
628+
629+
/** @var string|null */
630+
public $errno;
631+
513632
private function __construct() {}
514633

515634
public function next(): bool {}
516635
}
517636

518637
final class mysqli_sql_exception extends RuntimeException
519638
{
639+
/** @var string */
640+
protected $sqlstate = "00000";
520641
}
521642

522643
function mysqli_affected_rows(mysqli $mysql): int|string {}

0 commit comments

Comments
 (0)