Skip to content

Commit 7dc6b04

Browse files
villfakrakjoe
authored andcommitted
Fixed bug #74439 Wrong reflection on the Locale methods
1 parent ce330ad commit 7dc6b04

File tree

3 files changed

+89
-26
lines changed

3 files changed

+89
-26
lines changed

NEWS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ PHP NEWS
2525

2626
- intl:
2727
. Fixed bug #74433 (wrong reflection for Normalizer methods). (villfa)
28+
. Fixed bug #74439 (wrong reflection for Locale methods). (villfa)
2829

2930
- MySQLnd:
3031
. Added support for MySQL 8.0 types. (Johannes)

ext/intl/locale/locale_class.c

Lines changed: 34 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -38,26 +38,34 @@ zend_class_entry *Locale_ce_ptr = NULL;
3838
ZEND_BEGIN_ARG_INFO_EX( locale_0_args, 0, 0, 0 )
3939
ZEND_END_ARG_INFO()
4040

41-
ZEND_BEGIN_ARG_INFO_EX( locale_1_arg, 0, 0, 1 )
42-
ZEND_ARG_INFO( 0, arg1 )
41+
ZEND_BEGIN_ARG_INFO_EX( locale_arg_locale, 0, 0, 1 )
42+
ZEND_ARG_INFO( 0, locale )
4343
ZEND_END_ARG_INFO()
4444

45-
ZEND_BEGIN_ARG_INFO_EX( locale_2_args, 0, 0, 2 )
46-
ZEND_ARG_INFO( 0, arg1 )
47-
ZEND_ARG_INFO( 0, arg2 )
45+
ZEND_BEGIN_ARG_INFO_EX( locale_accept_from_http_args, 0, 0, 1 )
46+
ZEND_ARG_INFO( 0, header )
4847
ZEND_END_ARG_INFO()
4948

50-
ZEND_BEGIN_ARG_INFO_EX( locale_3_args, 0, 0, 3 )
51-
ZEND_ARG_INFO( 0, arg1 )
52-
ZEND_ARG_INFO( 0, arg2 )
53-
ZEND_ARG_INFO( 0, arg3 )
49+
ZEND_BEGIN_ARG_INFO_EX( locale_compose_args, 0, 0, 1 )
50+
ZEND_ARG_INFO( 0, subtags )
5451
ZEND_END_ARG_INFO()
5552

56-
ZEND_BEGIN_ARG_INFO_EX( locale_4_args, 0, 0, 4 )
57-
ZEND_ARG_INFO( 0, arg1 )
58-
ZEND_ARG_INFO( 0, arg2 )
59-
ZEND_ARG_INFO( 0, arg3 )
60-
ZEND_ARG_INFO( 0, arg4 )
53+
ZEND_BEGIN_ARG_INFO_EX( locale_2_args, 0, 0, 1 )
54+
ZEND_ARG_INFO( 0, locale )
55+
ZEND_ARG_INFO( 0, in_locale )
56+
ZEND_END_ARG_INFO()
57+
58+
ZEND_BEGIN_ARG_INFO_EX( locale_filter_matches_args, 0, 0, 2 )
59+
ZEND_ARG_INFO( 0, langtag )
60+
ZEND_ARG_INFO( 0, locale )
61+
ZEND_ARG_INFO( 0, canonicalize )
62+
ZEND_END_ARG_INFO()
63+
64+
ZEND_BEGIN_ARG_INFO_EX( locale_lookup_args, 0, 0, 2 )
65+
ZEND_ARG_INFO( 0, langtag )
66+
ZEND_ARG_INFO( 0, locale )
67+
ZEND_ARG_INFO( 0, canonicalize )
68+
ZEND_ARG_INFO( 0, default )
6169
ZEND_END_ARG_INFO()
6270

6371
/* }}} */
@@ -68,23 +76,23 @@ ZEND_END_ARG_INFO()
6876

6977
zend_function_entry Locale_class_functions[] = {
7078
ZEND_FENTRY( getDefault, zif_locale_get_default , locale_0_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
71-
ZEND_FENTRY( setDefault, zif_locale_set_default , locale_1_arg , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
72-
ZEND_FENTRY( getPrimaryLanguage, ZEND_FN( locale_get_primary_language ), locale_1_arg , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
73-
ZEND_FENTRY( getScript, ZEND_FN( locale_get_script ), locale_1_arg , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
74-
ZEND_FENTRY( getRegion, ZEND_FN( locale_get_region ), locale_1_arg , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
75-
ZEND_FENTRY( getKeywords, ZEND_FN( locale_get_keywords ), locale_1_arg , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
79+
ZEND_FENTRY( setDefault, zif_locale_set_default , locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
80+
ZEND_FENTRY( getPrimaryLanguage, ZEND_FN( locale_get_primary_language ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
81+
ZEND_FENTRY( getScript, ZEND_FN( locale_get_script ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
82+
ZEND_FENTRY( getRegion, ZEND_FN( locale_get_region ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
83+
ZEND_FENTRY( getKeywords, ZEND_FN( locale_get_keywords ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
7684
ZEND_FENTRY( getDisplayScript, ZEND_FN( locale_get_display_script ), locale_2_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
7785
ZEND_FENTRY( getDisplayRegion, ZEND_FN( locale_get_display_region ), locale_2_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
7886
ZEND_FENTRY( getDisplayName, ZEND_FN( locale_get_display_name ), locale_2_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
7987
ZEND_FENTRY( getDisplayLanguage, ZEND_FN( locale_get_display_language ), locale_2_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
8088
ZEND_FENTRY( getDisplayVariant, ZEND_FN( locale_get_display_variant ), locale_2_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
81-
ZEND_FENTRY( composeLocale, ZEND_FN( locale_compose ), locale_1_arg , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
82-
ZEND_FENTRY( parseLocale, ZEND_FN( locale_parse ), locale_1_arg , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
83-
ZEND_FENTRY( getAllVariants, ZEND_FN( locale_get_all_variants ), locale_1_arg , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
84-
ZEND_FENTRY( filterMatches, ZEND_FN( locale_filter_matches ), locale_3_args, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
85-
ZEND_FENTRY( lookup, ZEND_FN( locale_lookup ), locale_4_args, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
86-
ZEND_FENTRY( canonicalize, ZEND_FN( locale_canonicalize ), locale_1_arg , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
87-
ZEND_FENTRY( acceptFromHttp, ZEND_FN( locale_accept_from_http ), locale_1_arg , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
89+
ZEND_FENTRY( composeLocale, ZEND_FN( locale_compose ), locale_compose_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
90+
ZEND_FENTRY( parseLocale, ZEND_FN( locale_parse ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
91+
ZEND_FENTRY( getAllVariants, ZEND_FN( locale_get_all_variants ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
92+
ZEND_FENTRY( filterMatches, ZEND_FN( locale_filter_matches ), locale_filter_matches_args, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
93+
ZEND_FENTRY( lookup, ZEND_FN( locale_lookup ), locale_lookup_args, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
94+
ZEND_FENTRY( canonicalize, ZEND_FN( locale_canonicalize ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
95+
ZEND_FENTRY( acceptFromHttp, ZEND_FN( locale_accept_from_http ), locale_accept_from_http_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
8896
PHP_FE_END
8997
};
9098
/* }}} */

ext/intl/tests/locale_bug74439.phpt

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
--TEST--
2+
Bug #74439 Wrong reflection on the Locale methods
3+
--SKIPIF--
4+
<?php if (!extension_loaded('intl')) die('skip intl extension not available'); ?>
5+
--FILE--
6+
<?php
7+
8+
$methods = [
9+
'getDefault',
10+
'acceptFromHttp',
11+
'canonicalize',
12+
'composeLocale',
13+
'getAllVariants',
14+
'getKeywords',
15+
'getPrimaryLanguage',
16+
'getRegion',
17+
'getScript',
18+
'parseLocale',
19+
'setDefault',
20+
'getDisplayLanguage',
21+
'getDisplayName',
22+
'getDisplayRegion',
23+
'getDisplayScript',
24+
'getDisplayVariant',
25+
'filterMatches',
26+
'lookup',
27+
];
28+
29+
foreach ($methods as $method) {
30+
$rm = new ReflectionMethod(Locale::class, $method);
31+
printf("%s: %d, %d\n", $method, $rm->getNumberOfParameters(), $rm->getNumberOfRequiredParameters());
32+
}
33+
?>
34+
===DONE===
35+
--EXPECT--
36+
getDefault: 0, 0
37+
acceptFromHttp: 1, 1
38+
canonicalize: 1, 1
39+
composeLocale: 1, 1
40+
getAllVariants: 1, 1
41+
getKeywords: 1, 1
42+
getPrimaryLanguage: 1, 1
43+
getRegion: 1, 1
44+
getScript: 1, 1
45+
parseLocale: 1, 1
46+
setDefault: 1, 1
47+
getDisplayLanguage: 2, 1
48+
getDisplayName: 2, 1
49+
getDisplayRegion: 2, 1
50+
getDisplayScript: 2, 1
51+
getDisplayVariant: 2, 1
52+
filterMatches: 3, 2
53+
lookup: 4, 2
54+
===DONE===

0 commit comments

Comments
 (0)