Skip to content

Commit 65db340

Browse files
kocsismatecmb69
authored andcommitted
Add stubs for the Locale component of Intl
1 parent 292a1ae commit 65db340

File tree

6 files changed

+276
-122
lines changed

6 files changed

+276
-122
lines changed

ext/intl/locale/locale.stub.php

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
<?php
2+
3+
class Locale
4+
{
5+
/** @return string */
6+
public static function getDefault() {}
7+
8+
/** @return bool */
9+
public static function setDefault(string $locale) {}
10+
11+
/** @return ?string */
12+
public static function getPrimaryLanguage(string $locale) {}
13+
14+
/** @return ?string */
15+
public static function getScript(string $locale) {}
16+
17+
/** @return ?string */
18+
public static function getRegion(string $locale) {}
19+
20+
/** @return array|false|null */
21+
public static function getKeywords(string $locale) {}
22+
23+
/** @return string|false */
24+
public static function getDisplayScript(string $locale, ?string $in_locale = null) {}
25+
26+
/** @return string|false */
27+
public static function getDisplayRegion(string $locale, ?string $in_locale = null) {}
28+
29+
/** @return string|false */
30+
public static function getDisplayName(string $locale, ?string $in_locale = null) {}
31+
32+
/** @return string|false */
33+
public static function getDisplayLanguage(string $locale, ?string $in_locale = null) {}
34+
35+
/** @return string|false */
36+
public static function getDisplayVariant(string $locale, ?string $in_locale = null) {}
37+
38+
/** @return string|false */
39+
public static function composeLocale(array $subtags) {}
40+
41+
/** @return ?array */
42+
public static function parseLocale(string $locale) {}
43+
44+
/** @return ?array */
45+
public static function getAllVariants(string $locale) {}
46+
47+
/** @return ?bool */
48+
public static function filterMatches(string $langtag, string $locale, bool $canonicalize = false) {}
49+
50+
/** @return ?string */
51+
public static function lookup(array $langtag, string $locale, bool $canonicalize = false, ?string $def = null) {}
52+
53+
/** @return ?string */
54+
public static function canonicalize(string $locale) {}
55+
56+
/** @return string|false */
57+
public static function acceptFromHttp(string $header) {}
58+
}
59+
60+
function locale_get_default(): string {}
61+
62+
function locale_set_default(string $name): bool {}
63+
64+
function locale_get_primary_language(string $locale): ?string {}
65+
66+
function locale_get_script(string $locale): ?string {}
67+
68+
function locale_get_region(string $locale): ?string {}
69+
70+
function locale_get_keywords(string $locale): array|false|null {}
71+
72+
function locale_get_display_script(string $locale, ?string $in_locale = null): string|false {}
73+
74+
function locale_get_display_region(string $locale, ?string $in_locale = null): string|false {}
75+
76+
function locale_get_display_name(string $locale, ?string $in_locale = null): string|false {}
77+
78+
function locale_get_display_language(string $locale, ?string $in_locale = null): string|false {}
79+
80+
function locale_get_display_variant(string $locale, ?string $in_locale = null): string|false {}
81+
82+
function locale_compose(array $subtags): string|false {}
83+
84+
function locale_parse(string $locale): ?array {}
85+
86+
function locale_get_all_variants(string $locale): ?array {}
87+
88+
function locale_filter_matches(string $langtag, string $locale, bool $canonicalize = false): ?bool {}
89+
90+
function locale_canonicalize(string $locale): ?string {}
91+
92+
function locale_lookup(array $langtag, string $locale, bool $canonicalize = false, ?string $def = null): ?string {}
93+
94+
function locale_accept_from_http(string $header): string|false {}

ext/intl/locale/locale_arginfo.h

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
/* This is a generated file, edit the .stub.php file instead. */
2+
3+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Locale_getDefault, 0, 0, 0)
4+
ZEND_END_ARG_INFO()
5+
6+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Locale_setDefault, 0, 0, 1)
7+
ZEND_ARG_TYPE_INFO(0, locale, IS_STRING, 0)
8+
ZEND_END_ARG_INFO()
9+
10+
#define arginfo_class_Locale_getPrimaryLanguage arginfo_class_Locale_setDefault
11+
12+
#define arginfo_class_Locale_getScript arginfo_class_Locale_setDefault
13+
14+
#define arginfo_class_Locale_getRegion arginfo_class_Locale_setDefault
15+
16+
#define arginfo_class_Locale_getKeywords arginfo_class_Locale_setDefault
17+
18+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Locale_getDisplayScript, 0, 0, 1)
19+
ZEND_ARG_TYPE_INFO(0, locale, IS_STRING, 0)
20+
ZEND_ARG_TYPE_INFO(0, in_locale, IS_STRING, 1)
21+
ZEND_END_ARG_INFO()
22+
23+
#define arginfo_class_Locale_getDisplayRegion arginfo_class_Locale_getDisplayScript
24+
25+
#define arginfo_class_Locale_getDisplayName arginfo_class_Locale_getDisplayScript
26+
27+
#define arginfo_class_Locale_getDisplayLanguage arginfo_class_Locale_getDisplayScript
28+
29+
#define arginfo_class_Locale_getDisplayVariant arginfo_class_Locale_getDisplayScript
30+
31+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Locale_composeLocale, 0, 0, 1)
32+
ZEND_ARG_TYPE_INFO(0, subtags, IS_ARRAY, 0)
33+
ZEND_END_ARG_INFO()
34+
35+
#define arginfo_class_Locale_parseLocale arginfo_class_Locale_setDefault
36+
37+
#define arginfo_class_Locale_getAllVariants arginfo_class_Locale_setDefault
38+
39+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Locale_filterMatches, 0, 0, 2)
40+
ZEND_ARG_TYPE_INFO(0, langtag, IS_STRING, 0)
41+
ZEND_ARG_TYPE_INFO(0, locale, IS_STRING, 0)
42+
ZEND_ARG_TYPE_INFO(0, canonicalize, _IS_BOOL, 0)
43+
ZEND_END_ARG_INFO()
44+
45+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Locale_lookup, 0, 0, 2)
46+
ZEND_ARG_TYPE_INFO(0, langtag, IS_ARRAY, 0)
47+
ZEND_ARG_TYPE_INFO(0, locale, IS_STRING, 0)
48+
ZEND_ARG_TYPE_INFO(0, canonicalize, _IS_BOOL, 0)
49+
ZEND_ARG_TYPE_INFO(0, def, IS_STRING, 1)
50+
ZEND_END_ARG_INFO()
51+
52+
#define arginfo_class_Locale_canonicalize arginfo_class_Locale_setDefault
53+
54+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Locale_acceptFromHttp, 0, 0, 1)
55+
ZEND_ARG_TYPE_INFO(0, header, IS_STRING, 0)
56+
ZEND_END_ARG_INFO()
57+
58+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_locale_get_default, 0, 0, IS_STRING, 0)
59+
ZEND_END_ARG_INFO()
60+
61+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_locale_set_default, 0, 1, _IS_BOOL, 0)
62+
ZEND_ARG_TYPE_INFO(0, name, IS_STRING, 0)
63+
ZEND_END_ARG_INFO()
64+
65+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_locale_get_primary_language, 0, 1, IS_STRING, 1)
66+
ZEND_ARG_TYPE_INFO(0, locale, IS_STRING, 0)
67+
ZEND_END_ARG_INFO()
68+
69+
#define arginfo_locale_get_script arginfo_locale_get_primary_language
70+
71+
#define arginfo_locale_get_region arginfo_locale_get_primary_language
72+
73+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_locale_get_keywords, 0, 1, MAY_BE_ARRAY|MAY_BE_FALSE|MAY_BE_NULL)
74+
ZEND_ARG_TYPE_INFO(0, locale, IS_STRING, 0)
75+
ZEND_END_ARG_INFO()
76+
77+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_locale_get_display_script, 0, 1, MAY_BE_STRING|MAY_BE_FALSE)
78+
ZEND_ARG_TYPE_INFO(0, locale, IS_STRING, 0)
79+
ZEND_ARG_TYPE_INFO(0, in_locale, IS_STRING, 1)
80+
ZEND_END_ARG_INFO()
81+
82+
#define arginfo_locale_get_display_region arginfo_locale_get_display_script
83+
84+
#define arginfo_locale_get_display_name arginfo_locale_get_display_script
85+
86+
#define arginfo_locale_get_display_language arginfo_locale_get_display_script
87+
88+
#define arginfo_locale_get_display_variant arginfo_locale_get_display_script
89+
90+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_locale_compose, 0, 1, MAY_BE_STRING|MAY_BE_FALSE)
91+
ZEND_ARG_TYPE_INFO(0, subtags, IS_ARRAY, 0)
92+
ZEND_END_ARG_INFO()
93+
94+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_locale_parse, 0, 1, IS_ARRAY, 1)
95+
ZEND_ARG_TYPE_INFO(0, locale, IS_STRING, 0)
96+
ZEND_END_ARG_INFO()
97+
98+
#define arginfo_locale_get_all_variants arginfo_locale_parse
99+
100+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_locale_filter_matches, 0, 2, _IS_BOOL, 1)
101+
ZEND_ARG_TYPE_INFO(0, langtag, IS_STRING, 0)
102+
ZEND_ARG_TYPE_INFO(0, locale, IS_STRING, 0)
103+
ZEND_ARG_TYPE_INFO(0, canonicalize, _IS_BOOL, 0)
104+
ZEND_END_ARG_INFO()
105+
106+
#define arginfo_locale_canonicalize arginfo_locale_get_primary_language
107+
108+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_locale_lookup, 0, 2, IS_STRING, 1)
109+
ZEND_ARG_TYPE_INFO(0, langtag, IS_ARRAY, 0)
110+
ZEND_ARG_TYPE_INFO(0, locale, IS_STRING, 0)
111+
ZEND_ARG_TYPE_INFO(0, canonicalize, _IS_BOOL, 0)
112+
ZEND_ARG_TYPE_INFO(0, def, IS_STRING, 1)
113+
ZEND_END_ARG_INFO()
114+
115+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_locale_accept_from_http, 0, 1, MAY_BE_STRING|MAY_BE_FALSE)
116+
ZEND_ARG_TYPE_INFO(0, header, IS_STRING, 0)
117+
ZEND_END_ARG_INFO()

ext/intl/locale/locale_class.c

Lines changed: 19 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -18,77 +18,37 @@
1818
#include "locale_class.h"
1919
#include "locale_methods.h"
2020
#include "locale.h"
21+
#include "locale_arginfo.h"
2122

2223
zend_class_entry *Locale_ce_ptr = NULL;
2324

2425
/*
2526
* 'Locale' class registration structures & functions
2627
*/
2728

28-
/* {{{ Locale methods arguments info */
29-
/*
30-
* NOTE: when modifying 'locale_XX_args' do not forget to modify
31-
* approptiate 'locale_XX_args' for the procedural API!
32-
*/
33-
34-
ZEND_BEGIN_ARG_INFO_EX( locale_0_args, 0, 0, 0 )
35-
ZEND_END_ARG_INFO()
36-
37-
ZEND_BEGIN_ARG_INFO_EX( locale_arg_locale, 0, 0, 1 )
38-
ZEND_ARG_INFO( 0, locale )
39-
ZEND_END_ARG_INFO()
40-
41-
ZEND_BEGIN_ARG_INFO_EX( locale_accept_from_http_args, 0, 0, 1 )
42-
ZEND_ARG_INFO( 0, header )
43-
ZEND_END_ARG_INFO()
44-
45-
ZEND_BEGIN_ARG_INFO_EX( locale_compose_args, 0, 0, 1 )
46-
ZEND_ARG_INFO( 0, subtags )
47-
ZEND_END_ARG_INFO()
48-
49-
ZEND_BEGIN_ARG_INFO_EX( locale_2_args, 0, 0, 1 )
50-
ZEND_ARG_INFO( 0, locale )
51-
ZEND_ARG_INFO( 0, in_locale )
52-
ZEND_END_ARG_INFO()
53-
54-
ZEND_BEGIN_ARG_INFO_EX( locale_filter_matches_args, 0, 0, 2 )
55-
ZEND_ARG_INFO( 0, langtag )
56-
ZEND_ARG_INFO( 0, locale )
57-
ZEND_ARG_INFO( 0, canonicalize )
58-
ZEND_END_ARG_INFO()
59-
60-
ZEND_BEGIN_ARG_INFO_EX( locale_lookup_args, 0, 0, 2 )
61-
ZEND_ARG_INFO( 0, langtag )
62-
ZEND_ARG_INFO( 0, locale )
63-
ZEND_ARG_INFO( 0, canonicalize )
64-
ZEND_ARG_INFO( 0, default )
65-
ZEND_END_ARG_INFO()
66-
67-
/* }}} */
68-
6929
/* {{{ Locale_class_functions
7030
* Every 'Locale' class method has an entry in this table
7131
*/
7232

7333
static const zend_function_entry Locale_class_functions[] = {
74-
ZEND_FENTRY( getDefault, zif_locale_get_default , locale_0_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
75-
ZEND_FENTRY( setDefault, zif_locale_set_default , locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
76-
ZEND_FENTRY( getPrimaryLanguage, ZEND_FN( locale_get_primary_language ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
77-
ZEND_FENTRY( getScript, ZEND_FN( locale_get_script ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
78-
ZEND_FENTRY( getRegion, ZEND_FN( locale_get_region ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
79-
ZEND_FENTRY( getKeywords, ZEND_FN( locale_get_keywords ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
80-
ZEND_FENTRY( getDisplayScript, ZEND_FN( locale_get_display_script ), locale_2_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
81-
ZEND_FENTRY( getDisplayRegion, ZEND_FN( locale_get_display_region ), locale_2_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
82-
ZEND_FENTRY( getDisplayName, ZEND_FN( locale_get_display_name ), locale_2_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
83-
ZEND_FENTRY( getDisplayLanguage, ZEND_FN( locale_get_display_language ), locale_2_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
84-
ZEND_FENTRY( getDisplayVariant, ZEND_FN( locale_get_display_variant ), locale_2_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
85-
ZEND_FENTRY( composeLocale, ZEND_FN( locale_compose ), locale_compose_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
86-
ZEND_FENTRY( parseLocale, ZEND_FN( locale_parse ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
87-
ZEND_FENTRY( getAllVariants, ZEND_FN( locale_get_all_variants ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
88-
ZEND_FENTRY( filterMatches, ZEND_FN( locale_filter_matches ), locale_filter_matches_args, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
89-
ZEND_FENTRY( lookup, ZEND_FN( locale_lookup ), locale_lookup_args, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
90-
ZEND_FENTRY( canonicalize, ZEND_FN( locale_canonicalize ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
91-
ZEND_FENTRY( acceptFromHttp, ZEND_FN( locale_accept_from_http ), locale_accept_from_http_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
34+
ZEND_FENTRY( getDefault, zif_locale_get_default , arginfo_class_Locale_getDefault , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
35+
ZEND_FENTRY( setDefault, zif_locale_set_default , arginfo_class_Locale_setDefault , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
36+
ZEND_FENTRY( getPrimaryLanguage, ZEND_FN( locale_get_primary_language ), arginfo_class_Locale_getPrimaryLanguage , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
37+
ZEND_FENTRY( getScript, ZEND_FN( locale_get_script ), arginfo_class_Locale_getScript , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
38+
ZEND_FENTRY( getRegion, ZEND_FN( locale_get_region ), arginfo_class_Locale_getRegion , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
39+
ZEND_FENTRY( getKeywords, ZEND_FN( locale_get_keywords ), arginfo_class_Locale_getKeywords , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
40+
ZEND_FENTRY( getDisplayScript, ZEND_FN( locale_get_display_script ), arginfo_class_Locale_getDisplayScript , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
41+
ZEND_FENTRY( getDisplayRegion, ZEND_FN( locale_get_display_region ), arginfo_class_Locale_getDisplayRegion , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
42+
ZEND_FENTRY( getDisplayName, ZEND_FN( locale_get_display_name ), arginfo_class_Locale_getDisplayName , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
43+
ZEND_FENTRY( getDisplayLanguage, ZEND_FN( locale_get_display_language ), arginfo_class_Locale_getDisplayLanguage , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
44+
ZEND_FENTRY( getDisplayVariant, ZEND_FN( locale_get_display_variant ), arginfo_class_Locale_getDisplayVariant , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
45+
ZEND_FENTRY( composeLocale, ZEND_FN( locale_compose ), arginfo_class_Locale_composeLocale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
46+
ZEND_FENTRY( parseLocale, ZEND_FN( locale_parse ), arginfo_class_Locale_parseLocale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
47+
ZEND_FENTRY( getAllVariants, ZEND_FN( locale_get_all_variants ), arginfo_class_Locale_getAllVariants , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
48+
ZEND_FENTRY( filterMatches, ZEND_FN( locale_filter_matches ), arginfo_class_Locale_filterMatches, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
49+
ZEND_FENTRY( lookup, ZEND_FN( locale_lookup ), arginfo_class_Locale_lookup, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
50+
ZEND_FENTRY( canonicalize, ZEND_FN( locale_canonicalize ), arginfo_class_Locale_canonicalize , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
51+
ZEND_FENTRY( acceptFromHttp, ZEND_FN( locale_accept_from_http ), arginfo_class_Locale_acceptFromHttp , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
9252
PHP_FE_END
9353
};
9454
/* }}} */

ext/intl/locale/locale_methods.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -493,7 +493,7 @@ static void get_icu_disp_value_src_php( char* tag_name, INTERNAL_FUNCTION_PARAME
493493

494494
intl_error_reset( NULL );
495495

496-
if(zend_parse_parameters( ZEND_NUM_ARGS(), "s|s",
496+
if(zend_parse_parameters( ZEND_NUM_ARGS(), "s|s!",
497497
&loc_name, &loc_name_len ,
498498
&disp_loc_name ,&disp_loc_name_len ) == FAILURE)
499499
{
@@ -1549,11 +1549,11 @@ PHP_FUNCTION(locale_lookup)
15491549
/* }}} */
15501550

15511551
/* {{{ proto string Locale::acceptFromHttp(string $http_accept)
1552-
* Tries to find out best available locale based on HTTP Accept-Language header
1552+
* Tries to find out best available locale based on HTTP "Accept-Language" header
15531553
*/
15541554
/* }}} */
15551555
/* {{{ proto string locale_accept_from_http(string $http_accept)
1556-
* Tries to find out best available locale based on HTTP Accept-Language header
1556+
* Tries to find out best available locale based on HTTP "Accept-Language" header
15571557
*/
15581558
PHP_FUNCTION(locale_accept_from_http)
15591559
{

0 commit comments

Comments
 (0)