Skip to content

Commit 5f21062

Browse files
committed
Generate class entries for a few extensions
Relates to GH-6644
1 parent c5f4c3d commit 5f21062

22 files changed

+480
-128
lines changed

ext/bcmath/bcmath.stub.php

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

3-
/** @generate-function-entries */
3+
/**
4+
* @generate-function-entries
5+
* @generate-class-entries
6+
*/
47

58
function bcadd(string $num1, string $num2, ?int $scale = null): string {}
69

ext/bcmath/bcmath_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: 0c1e2a6163a5fc0f42bf79bbc530af7c5fd77074 */
2+
* Stub hash: 2232d60eb40f382b141ec28fe9542bd88e784333 */
33

44
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_bcadd, 0, 2, IS_STRING, 0)
55
ZEND_ARG_TYPE_INFO(0, num1, IS_STRING, 0)
@@ -69,3 +69,4 @@ static const zend_function_entry ext_functions[] = {
6969
ZEND_FE(bcscale, arginfo_bcscale)
7070
ZEND_FE_END
7171
};
72+

ext/bz2/bz2.stub.php

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

3-
/** @generate-function-entries */
3+
/**
4+
* @generate-function-entries
5+
* @generate-class-entries
6+
*/
47

58
/**
69
* @param string|resource $file

ext/bz2/bz2_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: 5436fd5a4b0fbfd3b3b3f1caa6a0cf8326c9c5f7 */
2+
* Stub hash: 10682cdfc126686cab8497868287459dc574b93d */
33

44
ZEND_BEGIN_ARG_INFO_EX(arginfo_bzopen, 0, 0, 2)
55
ZEND_ARG_INFO(0, file)
@@ -72,3 +72,4 @@ static const zend_function_entry ext_functions[] = {
7272
ZEND_FE(bzdecompress, arginfo_bzdecompress)
7373
ZEND_FE_END
7474
};
75+

ext/calendar/calendar.stub.php

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

3-
/** @generate-function-entries */
3+
/**
4+
* @generate-function-entries
5+
* @generate-class-entries
6+
*/
47

58
function cal_days_in_month(int $calendar, int $month, int $year): int {}
69

ext/calendar/calendar_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: ced2659f54bb25693831315625fe90b33e2f7cbe */
2+
* Stub hash: 4953fb1f36502b399061f5e0ca2f700d09761be3 */
33

44
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_cal_days_in_month, 0, 3, IS_LONG, 0)
55
ZEND_ARG_TYPE_INFO(0, calendar, IS_LONG, 0)
@@ -116,3 +116,4 @@ static const zend_function_entry ext_functions[] = {
116116
ZEND_FE(unixtojd, arginfo_unixtojd)
117117
ZEND_FE_END
118118
};
119+

ext/ctype/ctype.stub.php

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

3-
/** @generate-function-entries */
3+
/**
4+
* @generate-function-entries
5+
* @generate-class-entries
6+
*/
47

58
function ctype_alnum(mixed $text): bool {}
69

ext/ctype/ctype_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: aa287af25fe33a05d15d85b92b0edcfae00284a2 */
2+
* Stub hash: bdf377cc2819bdc625cd2ee1afed2f3e7990eef8 */
33

44
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ctype_alnum, 0, 1, _IS_BOOL, 0)
55
ZEND_ARG_TYPE_INFO(0, text, IS_MIXED, 0)
@@ -53,3 +53,4 @@ static const zend_function_entry ext_functions[] = {
5353
ZEND_FE(ctype_xdigit, arginfo_ctype_xdigit)
5454
ZEND_FE_END
5555
};
56+

ext/curl/curl.stub.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
11
<?php
22

3-
/** @generate-function-entries */
3+
/**
4+
* @generate-function-entries
5+
* @generate-class-entries
6+
*/
47

8+
/** @strict-properties */
59
final class CurlHandle
610
{
711
}
812

13+
/** @strict-properties */
914
final class CurlMultiHandle
1015
{
1116
}
1217

18+
/** @strict-properties */
1319
final class CurlShareHandle
1420
{
1521
}

ext/curl/curl_arginfo.h

Lines changed: 35 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: f1d616c644ad366405816cde0384f6f391773ebf */
2+
* Stub hash: 0d1b398a10959922a9e12df75fd8465291058fd5 */
33

44
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_close, 0, 1, IS_VOID, 0)
55
ZEND_ARG_OBJ_INFO(0, handle, CurlHandle, 0)
@@ -241,3 +241,37 @@ static const zend_function_entry class_CurlMultiHandle_methods[] = {
241241
static const zend_function_entry class_CurlShareHandle_methods[] = {
242242
ZEND_FE_END
243243
};
244+
245+
zend_class_entry *register_class_CurlHandle()
246+
{
247+
zend_class_entry ce, *class_entry;
248+
249+
INIT_CLASS_ENTRY(ce, "CurlHandle", class_CurlHandle_methods);
250+
class_entry = zend_register_internal_class_ex(&ce, NULL);
251+
class_entry->ce_flags |= ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES;
252+
253+
return class_entry;
254+
}
255+
256+
zend_class_entry *register_class_CurlMultiHandle()
257+
{
258+
zend_class_entry ce, *class_entry;
259+
260+
INIT_CLASS_ENTRY(ce, "CurlMultiHandle", class_CurlMultiHandle_methods);
261+
class_entry = zend_register_internal_class_ex(&ce, NULL);
262+
class_entry->ce_flags |= ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES;
263+
264+
return class_entry;
265+
}
266+
267+
zend_class_entry *register_class_CurlShareHandle()
268+
{
269+
zend_class_entry ce, *class_entry;
270+
271+
INIT_CLASS_ENTRY(ce, "CurlShareHandle", class_CurlShareHandle_methods);
272+
class_entry = zend_register_internal_class_ex(&ce, NULL);
273+
class_entry->ce_flags |= ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES;
274+
275+
return class_entry;
276+
}
277+

ext/curl/curl_private.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,8 @@ static inline php_curlsh *curl_share_from_obj(zend_object *obj) {
152152

153153
#define Z_CURL_SHARE_P(zv) curl_share_from_obj(Z_OBJ_P(zv))
154154

155-
void curl_multi_register_class(const zend_function_entry *method_entries);
156-
void curl_share_register_class(const zend_function_entry *method_entries);
155+
void curl_multi_register_handlers(void);
156+
void curl_share_register_handlers(void);
157157
void curlfile_register_class(void);
158158
int curl_cast_object(zend_object *obj, zval *result, int type);
159159

ext/curl/interface.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1177,10 +1177,7 @@ PHP_MINIT_FUNCTION(curl)
11771177
return FAILURE;
11781178
}
11791179

1180-
zend_class_entry ce;
1181-
INIT_CLASS_ENTRY(ce, "CurlHandle", class_CurlHandle_methods);
1182-
curl_ce = zend_register_internal_class(&ce);
1183-
curl_ce->ce_flags |= ZEND_ACC_FINAL | ZEND_ACC_NO_DYNAMIC_PROPERTIES;
1180+
curl_ce = register_class_CurlHandle();
11841181
curl_ce->create_object = curl_create_object;
11851182
curl_ce->serialize = zend_class_serialize_deny;
11861183
curl_ce->unserialize = zend_class_unserialize_deny;
@@ -1193,8 +1190,11 @@ PHP_MINIT_FUNCTION(curl)
11931190
curl_object_handlers.clone_obj = curl_clone_obj;
11941191
curl_object_handlers.cast_object = curl_cast_object;
11951192

1196-
curl_multi_register_class(class_CurlMultiHandle_methods);
1197-
curl_share_register_class(class_CurlShareHandle_methods);
1193+
curl_multi_ce = register_class_CurlMultiHandle();
1194+
curl_multi_register_handlers();
1195+
1196+
curl_share_ce = register_class_CurlShareHandle();
1197+
curl_share_register_handlers();
11981198
curlfile_register_class();
11991199

12001200
return SUCCESS;

ext/curl/multi.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -580,11 +580,7 @@ static HashTable *curl_multi_get_gc(zend_object *object, zval **table, int *n)
580580
return zend_std_get_properties(object);
581581
}
582582

583-
void curl_multi_register_class(const zend_function_entry *method_entries) {
584-
zend_class_entry ce_multi;
585-
INIT_CLASS_ENTRY(ce_multi, "CurlMultiHandle", method_entries);
586-
curl_multi_ce = zend_register_internal_class(&ce_multi);
587-
curl_multi_ce->ce_flags |= ZEND_ACC_FINAL | ZEND_ACC_NO_DYNAMIC_PROPERTIES;
583+
void curl_multi_register_handlers(void) {
588584
curl_multi_ce->create_object = curl_multi_create_object;
589585
curl_multi_ce->serialize = zend_class_serialize_deny;
590586
curl_multi_ce->unserialize = zend_class_unserialize_deny;

ext/curl/share.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -162,11 +162,7 @@ void curl_share_free_obj(zend_object *object)
162162
zend_object_std_dtor(&sh->std);
163163
}
164164

165-
void curl_share_register_class(const zend_function_entry *method_entries) {
166-
zend_class_entry ce_share;
167-
INIT_CLASS_ENTRY(ce_share, "CurlShareHandle", method_entries);
168-
curl_share_ce = zend_register_internal_class(&ce_share);
169-
curl_share_ce->ce_flags |= ZEND_ACC_FINAL | ZEND_ACC_NO_DYNAMIC_PROPERTIES;
165+
void curl_share_register_handlers(void) {
170166
curl_share_ce->create_object = curl_share_create_object;
171167
curl_share_ce->serialize = &zend_class_serialize_deny;
172168
curl_share_ce->unserialize = &zend_class_unserialize_deny;

ext/date/php_date.c

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1603,10 +1603,7 @@ static int date_interval_has_property(zend_object *object, zend_string *name, in
16031603

16041604
static void date_register_classes(void) /* {{{ */
16051605
{
1606-
zend_class_entry ce_date, ce_immutable, ce_timezone, ce_interval, ce_period, ce_interface;
1607-
1608-
INIT_CLASS_ENTRY(ce_interface, "DateTimeInterface", class_DateTimeInterface_methods);
1609-
date_ce_interface = zend_register_internal_interface(&ce_interface);
1606+
date_ce_interface = register_class_DateTimeInterface();
16101607
date_ce_interface->interface_gets_implemented = implement_date_interface_handler;
16111608

16121609
#define REGISTER_DATE_INTERFACE_CONST_STRING(const_name, value) \
@@ -1626,31 +1623,26 @@ static void date_register_classes(void) /* {{{ */
16261623
REGISTER_DATE_INTERFACE_CONST_STRING("RSS", DATE_FORMAT_RFC1123);
16271624
REGISTER_DATE_INTERFACE_CONST_STRING("W3C", DATE_FORMAT_RFC3339);
16281625

1629-
INIT_CLASS_ENTRY(ce_date, "DateTime", class_DateTime_methods);
1630-
ce_date.create_object = date_object_new_date;
1631-
date_ce_date = zend_register_internal_class_ex(&ce_date, NULL);
1626+
date_ce_date = register_class_DateTime(date_ce_interface);
1627+
date_ce_date->create_object = date_object_new_date;
16321628
memcpy(&date_object_handlers_date, &std_object_handlers, sizeof(zend_object_handlers));
16331629
date_object_handlers_date.offset = XtOffsetOf(php_date_obj, std);
16341630
date_object_handlers_date.free_obj = date_object_free_storage_date;
16351631
date_object_handlers_date.clone_obj = date_object_clone_date;
16361632
date_object_handlers_date.compare = date_object_compare_date;
16371633
date_object_handlers_date.get_properties_for = date_object_get_properties_for;
16381634
date_object_handlers_date.get_gc = date_object_get_gc;
1639-
zend_class_implements(date_ce_date, 1, date_ce_interface);
16401635

1641-
INIT_CLASS_ENTRY(ce_immutable, "DateTimeImmutable", class_DateTimeImmutable_methods);
1642-
ce_immutable.create_object = date_object_new_date;
1643-
date_ce_immutable = zend_register_internal_class_ex(&ce_immutable, NULL);
1636+
date_ce_immutable = register_class_DateTimeImmutable(date_ce_interface);
1637+
date_ce_immutable->create_object = date_object_new_date;
16441638
memcpy(&date_object_handlers_immutable, &std_object_handlers, sizeof(zend_object_handlers));
16451639
date_object_handlers_immutable.clone_obj = date_object_clone_date;
16461640
date_object_handlers_immutable.compare = date_object_compare_date;
16471641
date_object_handlers_immutable.get_properties_for = date_object_get_properties_for;
16481642
date_object_handlers_immutable.get_gc = date_object_get_gc;
1649-
zend_class_implements(date_ce_immutable, 1, date_ce_interface);
16501643

1651-
INIT_CLASS_ENTRY(ce_timezone, "DateTimeZone", class_DateTimeZone_methods);
1652-
ce_timezone.create_object = date_object_new_timezone;
1653-
date_ce_timezone = zend_register_internal_class_ex(&ce_timezone, NULL);
1644+
date_ce_timezone = register_class_DateTimeZone();
1645+
date_ce_timezone->create_object = date_object_new_timezone;
16541646
memcpy(&date_object_handlers_timezone, &std_object_handlers, sizeof(zend_object_handlers));
16551647
date_object_handlers_timezone.offset = XtOffsetOf(php_timezone_obj, std);
16561648
date_object_handlers_timezone.free_obj = date_object_free_storage_timezone;
@@ -1678,9 +1670,8 @@ static void date_register_classes(void) /* {{{ */
16781670
REGISTER_TIMEZONE_CLASS_CONST_STRING("ALL_WITH_BC", PHP_DATE_TIMEZONE_GROUP_ALL_W_BC);
16791671
REGISTER_TIMEZONE_CLASS_CONST_STRING("PER_COUNTRY", PHP_DATE_TIMEZONE_PER_COUNTRY);
16801672

1681-
INIT_CLASS_ENTRY(ce_interval, "DateInterval", class_DateInterval_methods);
1682-
ce_interval.create_object = date_object_new_interval;
1683-
date_ce_interval = zend_register_internal_class_ex(&ce_interval, NULL);
1673+
date_ce_interval = register_class_DateInterval();
1674+
date_ce_interval->create_object = date_object_new_interval;
16841675
memcpy(&date_object_handlers_interval, &std_object_handlers, sizeof(zend_object_handlers));
16851676
date_object_handlers_interval.offset = XtOffsetOf(php_interval_obj, std);
16861677
date_object_handlers_interval.free_obj = date_object_free_storage_interval;
@@ -1693,11 +1684,9 @@ static void date_register_classes(void) /* {{{ */
16931684
date_object_handlers_interval.get_gc = date_object_get_gc_interval;
16941685
date_object_handlers_interval.compare = date_interval_compare_objects;
16951686

1696-
INIT_CLASS_ENTRY(ce_period, "DatePeriod", class_DatePeriod_methods);
1697-
ce_period.create_object = date_object_new_period;
1698-
date_ce_period = zend_register_internal_class_ex(&ce_period, NULL);
1687+
date_ce_period = register_class_DatePeriod(zend_ce_aggregate);
1688+
date_ce_period->create_object = date_object_new_period;
16991689
date_ce_period->get_iterator = date_object_period_get_iterator;
1700-
zend_class_implements(date_ce_period, 1, zend_ce_aggregate);
17011690
memcpy(&date_object_handlers_period, &std_object_handlers, sizeof(zend_object_handlers));
17021691
date_object_handlers_period.offset = XtOffsetOf(php_period_obj, std);
17031692
date_object_handlers_period.free_obj = date_object_free_storage_period;

ext/date/php_date.stub.php

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

3-
/** @generate-function-entries */
3+
/**
4+
* @generate-function-entries
5+
* @generate-class-entries
6+
*/
47

58
function strtotime(string $datetime, ?int $baseTimestamp = null): int|false {}
69

ext/date/php_date_arginfo.h

Lines changed: 65 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: 880a93d8a3461635447318317869fa7d3d7762dd */
2+
* Stub hash: fde1c48b5ad92f574ac049101f421232c6a64252 */
33

44
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_strtotime, 0, 1, MAY_BE_LONG|MAY_BE_FALSE)
55
ZEND_ARG_TYPE_INFO(0, datetime, IS_STRING, 0)
@@ -657,3 +657,67 @@ static const zend_function_entry class_DatePeriod_methods[] = {
657657
ZEND_ME(DatePeriod, getIterator, arginfo_class_DatePeriod_getIterator, ZEND_ACC_PUBLIC)
658658
ZEND_FE_END
659659
};
660+
661+
zend_class_entry *register_class_DateTimeInterface()
662+
{
663+
zend_class_entry ce, *class_entry;
664+
665+
INIT_CLASS_ENTRY(ce, "DateTimeInterface", class_DateTimeInterface_methods);
666+
class_entry = zend_register_internal_interface(&ce);
667+
668+
return class_entry;
669+
}
670+
671+
zend_class_entry *register_class_DateTime(zend_class_entry *class_entry_DateTimeInterface)
672+
{
673+
zend_class_entry ce, *class_entry;
674+
675+
INIT_CLASS_ENTRY(ce, "DateTime", class_DateTime_methods);
676+
class_entry = zend_register_internal_class_ex(&ce, NULL);
677+
zend_class_implements(class_entry, 1, class_entry_DateTimeInterface);
678+
679+
return class_entry;
680+
}
681+
682+
zend_class_entry *register_class_DateTimeImmutable(zend_class_entry *class_entry_DateTimeInterface)
683+
{
684+
zend_class_entry ce, *class_entry;
685+
686+
INIT_CLASS_ENTRY(ce, "DateTimeImmutable", class_DateTimeImmutable_methods);
687+
class_entry = zend_register_internal_class_ex(&ce, NULL);
688+
zend_class_implements(class_entry, 1, class_entry_DateTimeInterface);
689+
690+
return class_entry;
691+
}
692+
693+
zend_class_entry *register_class_DateTimeZone()
694+
{
695+
zend_class_entry ce, *class_entry;
696+
697+
INIT_CLASS_ENTRY(ce, "DateTimeZone", class_DateTimeZone_methods);
698+
class_entry = zend_register_internal_class_ex(&ce, NULL);
699+
700+
return class_entry;
701+
}
702+
703+
zend_class_entry *register_class_DateInterval()
704+
{
705+
zend_class_entry ce, *class_entry;
706+
707+
INIT_CLASS_ENTRY(ce, "DateInterval", class_DateInterval_methods);
708+
class_entry = zend_register_internal_class_ex(&ce, NULL);
709+
710+
return class_entry;
711+
}
712+
713+
zend_class_entry *register_class_DatePeriod(zend_class_entry *class_entry_IteratorAggregate)
714+
{
715+
zend_class_entry ce, *class_entry;
716+
717+
INIT_CLASS_ENTRY(ce, "DatePeriod", class_DatePeriod_methods);
718+
class_entry = zend_register_internal_class_ex(&ce, NULL);
719+
zend_class_implements(class_entry, 1, class_entry_IteratorAggregate);
720+
721+
return class_entry;
722+
}
723+

ext/dba/dba.stub.php

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

3-
/** @generate-function-entries */
3+
/**
4+
* @generate-function-entries
5+
* @generate-class-entries
6+
*/
47

58
/**
69
* @param string $path

0 commit comments

Comments
 (0)