This source file includes following definitions.
- ZEND_DECLARE_MODULE_GLOBALS
- ZEND_TSRMLS_CACHE_DEFINE
- PHP_MINIT_FUNCTION
- PHP_MSHUTDOWN_FUNCTION
- PHP_RINIT_FUNCTION
- PHP_RSHUTDOWN_FUNCTION
- PHP_MINFO_FUNCTION
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #ifdef HAVE_CONFIG_H
21 #include "config.h"
22 #endif
23
24
25 #include "php_intl.h"
26 #include "intl_error.h"
27 #include "collator/collator_class.h"
28 #include "collator/collator.h"
29 #include "collator/collator_attr.h"
30 #include "collator/collator_compare.h"
31 #include "collator/collator_sort.h"
32 #include "collator/collator_convert.h"
33 #include "collator/collator_locale.h"
34 #include "collator/collator_create.h"
35 #include "collator/collator_error.h"
36
37 #include "converter/converter.h"
38
39 #include "formatter/formatter.h"
40 #include "formatter/formatter_class.h"
41 #include "formatter/formatter_attr.h"
42 #include "formatter/formatter_format.h"
43 #include "formatter/formatter_main.h"
44 #include "formatter/formatter_parse.h"
45
46 #include "grapheme/grapheme.h"
47
48 #include "msgformat/msgformat.h"
49 #include "msgformat/msgformat_class.h"
50 #include "msgformat/msgformat_attr.h"
51 #include "msgformat/msgformat_format.h"
52 #include "msgformat/msgformat_parse.h"
53
54 #include "normalizer/normalizer.h"
55 #include "normalizer/normalizer_class.h"
56 #include "normalizer/normalizer_normalize.h"
57
58 #include "locale/locale.h"
59 #include "locale/locale_class.h"
60 #include "locale/locale_methods.h"
61
62 #include "dateformat/dateformat.h"
63 #include "dateformat/dateformat_class.h"
64 #include "dateformat/dateformat_attr.h"
65 #include "dateformat/dateformat_attrcpp.h"
66 #include "dateformat/dateformat_format.h"
67 #include "dateformat/dateformat_format_object.h"
68 #include "dateformat/dateformat_parse.h"
69 #include "dateformat/dateformat_data.h"
70
71 #include "resourcebundle/resourcebundle_class.h"
72
73 #include "transliterator/transliterator.h"
74 #include "transliterator/transliterator_class.h"
75 #include "transliterator/transliterator_methods.h"
76
77 #include "timezone/timezone_class.h"
78 #include "timezone/timezone_methods.h"
79
80 #include "calendar/calendar_class.h"
81 #include "calendar/calendar_methods.h"
82 #include "calendar/gregoriancalendar_methods.h"
83
84 #include "breakiterator/breakiterator_class.h"
85 #include "breakiterator/breakiterator_iterators.h"
86
87 #include "idn/idn.h"
88 #include "uchar/uchar.h"
89
90 #if U_ICU_VERSION_MAJOR_NUM * 1000 + U_ICU_VERSION_MINOR_NUM >= 4002
91 # include "spoofchecker/spoofchecker_class.h"
92 # include "spoofchecker/spoofchecker.h"
93 # include "spoofchecker/spoofchecker_create.h"
94 # include "spoofchecker/spoofchecker_main.h"
95 #endif
96
97 #include "msgformat/msgformat.h"
98 #include "common/common_error.h"
99 #include "common/common_enum.h"
100
101 #include <unicode/uloc.h>
102 #include <unicode/uclean.h>
103 #include <ext/standard/info.h>
104
105 #include "php_ini.h"
106 #define INTL_MODULE_VERSION PHP_INTL_VERSION
107
108
109
110
111
112
113
114
115 #undef locale_get_default
116 #undef locale_set_default
117
118 ZEND_DECLARE_MODULE_GLOBALS( intl )
119
120 const char *intl_locale_get_default( void )
121 {
122 if( INTL_G(default_locale) == NULL ) {
123 return uloc_getDefault();
124 }
125 return INTL_G(default_locale);
126 }
127
128
129 ZEND_BEGIN_ARG_INFO_EX(collator_static_0_args, 0, 0, 0)
130 ZEND_END_ARG_INFO()
131
132 ZEND_BEGIN_ARG_INFO_EX(collator_static_1_arg, 0, 0, 1)
133 ZEND_ARG_INFO(0, arg1)
134 ZEND_END_ARG_INFO()
135
136 ZEND_BEGIN_ARG_INFO_EX(collator_static_2_args, 0, 0, 2)
137 ZEND_ARG_INFO(0, arg1)
138 ZEND_ARG_INFO(0, arg2)
139 ZEND_END_ARG_INFO()
140
141 ZEND_BEGIN_ARG_INFO_EX(collator_0_args, 0, 0, 1)
142 ZEND_ARG_OBJ_INFO(0, object, Collator, 0)
143 ZEND_END_ARG_INFO()
144
145 ZEND_BEGIN_ARG_INFO_EX(collator_1_arg, 0, 0, 2)
146 ZEND_ARG_OBJ_INFO(0, object, Collator, 0)
147 ZEND_ARG_INFO(0, arg1)
148 ZEND_END_ARG_INFO()
149
150 ZEND_BEGIN_ARG_INFO_EX(collator_2_args, 0, 0, 3)
151 ZEND_ARG_OBJ_INFO(0, object, Collator, 0)
152 ZEND_ARG_INFO(0, arg1)
153 ZEND_ARG_INFO(0, arg2)
154 ZEND_END_ARG_INFO()
155
156 ZEND_BEGIN_ARG_INFO_EX(collator_sort_args, 0, 0, 2)
157 ZEND_ARG_OBJ_INFO(0, object, Collator, 0)
158 ZEND_ARG_ARRAY_INFO(1, arr, 0)
159 ZEND_ARG_INFO(0, sort_flags)
160 ZEND_END_ARG_INFO()
161
162 ZEND_BEGIN_ARG_INFO_EX(numfmt_parse_arginfo, 0, 0, 2)
163 ZEND_ARG_INFO(0, formatter)
164 ZEND_ARG_INFO(0, string)
165 ZEND_ARG_INFO(0, type)
166 ZEND_ARG_INFO(1, position)
167 ZEND_END_ARG_INFO()
168
169 ZEND_BEGIN_ARG_INFO_EX(numfmt_parse_currency_arginfo, 0, 0, 3)
170 ZEND_ARG_INFO(0, formatter)
171 ZEND_ARG_INFO(0, string)
172 ZEND_ARG_INFO(1, currency)
173 ZEND_ARG_INFO(1, position)
174 ZEND_END_ARG_INFO()
175
176 ZEND_BEGIN_ARG_INFO_EX(locale_0_args, 0, 0, 0)
177 ZEND_END_ARG_INFO()
178
179 ZEND_BEGIN_ARG_INFO_EX(locale_1_arg, 0, 0, 1)
180 ZEND_ARG_INFO(0, arg1)
181 ZEND_END_ARG_INFO()
182
183 ZEND_BEGIN_ARG_INFO_EX(locale_2_args, 0, 0, 2)
184 ZEND_ARG_INFO(0, arg1)
185 ZEND_ARG_INFO(0, arg2)
186 ZEND_END_ARG_INFO()
187
188 ZEND_BEGIN_ARG_INFO_EX(locale_3_args, 0, 0, 3)
189 ZEND_ARG_INFO(0, arg1)
190 ZEND_ARG_INFO(0, arg2)
191 ZEND_ARG_INFO(0, arg3)
192 ZEND_END_ARG_INFO()
193
194 ZEND_BEGIN_ARG_INFO_EX(locale_4_args, 0, 0, 4)
195 ZEND_ARG_INFO(0, arg1)
196 ZEND_ARG_INFO(0, arg2)
197 ZEND_ARG_INFO(0, arg3)
198 ZEND_ARG_INFO(0, arg4)
199 ZEND_END_ARG_INFO()
200
201 #define intl_0_args collator_static_0_args
202 #define intl_1_arg collator_static_1_arg
203
204 ZEND_BEGIN_ARG_INFO_EX(normalizer_args, 0, 0, 1)
205 ZEND_ARG_INFO(0, input)
206 ZEND_ARG_INFO(0, form)
207 ZEND_END_ARG_INFO()
208
209 ZEND_BEGIN_ARG_INFO_EX(grapheme_1_arg, 0, 0, 1)
210 ZEND_ARG_INFO(0, string)
211 ZEND_END_ARG_INFO()
212
213 ZEND_BEGIN_ARG_INFO_EX(grapheme_search_args, 0, 0, 2)
214 ZEND_ARG_INFO(0, haystack)
215 ZEND_ARG_INFO(0, needle)
216 ZEND_ARG_INFO(0, offset)
217 ZEND_END_ARG_INFO()
218
219 ZEND_BEGIN_ARG_INFO_EX(grapheme_substr_args, 0, 0, 2)
220 ZEND_ARG_INFO(0, string)
221 ZEND_ARG_INFO(0, start)
222 ZEND_ARG_INFO(0, length)
223 ZEND_END_ARG_INFO()
224
225 ZEND_BEGIN_ARG_INFO_EX(grapheme_strstr_args, 0, 0, 2)
226 ZEND_ARG_INFO(0, haystack)
227 ZEND_ARG_INFO(0, needle)
228 ZEND_ARG_INFO(0, before_needle)
229 ZEND_END_ARG_INFO()
230
231 ZEND_BEGIN_ARG_INFO_EX(grapheme_extract_args, 0, 0, 2)
232 ZEND_ARG_INFO(0, arg1)
233 ZEND_ARG_INFO(0, arg2)
234 ZEND_ARG_INFO(0, arg3)
235 ZEND_ARG_INFO(0, arg4)
236 ZEND_ARG_INFO(1, arg5)
237 ZEND_END_ARG_INFO()
238
239 ZEND_BEGIN_ARG_INFO_EX(datefmt_parse_args, 0, 0, 2)
240 ZEND_ARG_INFO(0, formatter)
241 ZEND_ARG_INFO(0, string)
242 ZEND_ARG_INFO(1, position)
243 ZEND_END_ARG_INFO()
244
245 ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_create, 0, 0, 2)
246 ZEND_ARG_INFO(0, locale)
247 ZEND_ARG_INFO(0, style)
248 ZEND_ARG_INFO(0, pattern)
249 ZEND_END_ARG_INFO()
250
251 ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_get_error_code, 0, 0, 1)
252 ZEND_ARG_INFO(0, nf)
253 ZEND_END_ARG_INFO()
254
255 ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_format, 0, 0, 2)
256 ZEND_ARG_INFO(0, nf)
257 ZEND_ARG_INFO(0, num)
258 ZEND_ARG_INFO(0, type)
259 ZEND_END_ARG_INFO()
260
261 ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_format_currency, 0, 0, 3)
262 ZEND_ARG_INFO(0, nf)
263 ZEND_ARG_INFO(0, num)
264 ZEND_ARG_INFO(0, currency)
265 ZEND_END_ARG_INFO()
266
267 ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_get_attribute, 0, 0, 2)
268 ZEND_ARG_INFO(0, nf)
269 ZEND_ARG_INFO(0, attr)
270 ZEND_END_ARG_INFO()
271
272 ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_set_attribute, 0, 0, 3)
273 ZEND_ARG_INFO(0, nf)
274 ZEND_ARG_INFO(0, attr)
275 ZEND_ARG_INFO(0, value)
276 ZEND_END_ARG_INFO()
277
278 ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_set_symbol, 0, 0, 3)
279 ZEND_ARG_INFO(0, nf)
280 ZEND_ARG_INFO(0, attr)
281 ZEND_ARG_INFO(0, symbol)
282 ZEND_END_ARG_INFO()
283
284 ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_set_pattern, 0, 0, 2)
285 ZEND_ARG_INFO(0, nf)
286 ZEND_ARG_INFO(0, pattern)
287 ZEND_END_ARG_INFO()
288
289 ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_get_locale, 0, 0, 1)
290 ZEND_ARG_INFO(0, nf)
291 ZEND_ARG_INFO(0, type)
292 ZEND_END_ARG_INFO()
293
294 ZEND_BEGIN_ARG_INFO_EX(arginfo_msgfmt_create, 0, 0, 2)
295 ZEND_ARG_INFO(0, locale)
296 ZEND_ARG_INFO(0, pattern)
297 ZEND_END_ARG_INFO()
298
299 ZEND_BEGIN_ARG_INFO_EX(arginfo_msgfmt_get_error_code, 0, 0, 1)
300 ZEND_ARG_INFO(0, nf)
301 ZEND_END_ARG_INFO()
302
303 ZEND_BEGIN_ARG_INFO_EX(arginfo_msgfmt_get_error_message, 0, 0, 1)
304 ZEND_ARG_INFO(0, coll)
305 ZEND_END_ARG_INFO()
306
307 ZEND_BEGIN_ARG_INFO_EX(arginfo_msgfmt_format, 0, 0, 2)
308 ZEND_ARG_INFO(0, nf)
309 ZEND_ARG_INFO(0, args)
310 ZEND_END_ARG_INFO()
311
312 ZEND_BEGIN_ARG_INFO_EX(arginfo_msgfmt_format_message, 0, 0, 3)
313 ZEND_ARG_INFO(0, locale)
314 ZEND_ARG_INFO(0, pattern)
315 ZEND_ARG_INFO(0, args)
316 ZEND_END_ARG_INFO()
317
318 ZEND_BEGIN_ARG_INFO_EX(arginfo_msgfmt_parse, 0, 0, 2)
319 ZEND_ARG_INFO(0, nf)
320 ZEND_ARG_INFO(0, source)
321 ZEND_END_ARG_INFO()
322
323 ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_parse_message, 0, 0, 3)
324 ZEND_ARG_INFO(0, locale)
325 ZEND_ARG_INFO(0, pattern)
326 ZEND_ARG_INFO(0, source)
327 ZEND_END_ARG_INFO()
328
329 ZEND_BEGIN_ARG_INFO_EX(arginfo_msgfmt_set_pattern, 0, 0, 2)
330 ZEND_ARG_INFO(0, mf)
331 ZEND_ARG_INFO(0, pattern)
332 ZEND_END_ARG_INFO()
333
334 ZEND_BEGIN_ARG_INFO_EX(arginfo_msgfmt_get_locale, 0, 0, 1)
335 ZEND_ARG_INFO(0, mf)
336 ZEND_END_ARG_INFO()
337
338 ZEND_BEGIN_ARG_INFO_EX(arginfo_datefmt_set_pattern, 0, 0, 2)
339 ZEND_ARG_INFO(0, mf)
340 ZEND_ARG_INFO(0, pattern)
341 ZEND_END_ARG_INFO()
342
343 ZEND_BEGIN_ARG_INFO_EX(arginfo_datefmt_set_timezone, 0, 0, 2)
344 ZEND_ARG_INFO(0, mf)
345 ZEND_ARG_INFO(0, timezone)
346 ZEND_END_ARG_INFO()
347
348 ZEND_BEGIN_ARG_INFO_EX(arginfo_datefmt_set_calendar, 0, 0, 2)
349 ZEND_ARG_INFO(0, mf)
350 ZEND_ARG_INFO(0, calendar)
351 ZEND_END_ARG_INFO()
352
353 ZEND_BEGIN_ARG_INFO_EX(arginfo_datefmt_format, 0, 0, 0)
354 ZEND_ARG_INFO(0, args)
355 ZEND_ARG_INFO(0, array)
356 ZEND_END_ARG_INFO()
357
358 ZEND_BEGIN_ARG_INFO_EX(arginfo_datefmt_format_object, 0, 0, 1)
359 ZEND_ARG_INFO(0, object)
360 ZEND_ARG_INFO(0, format)
361 ZEND_ARG_INFO(0, locale)
362 ZEND_END_ARG_INFO()
363
364
365 ZEND_BEGIN_ARG_INFO_EX(arginfo_datefmt_create, 0, 0, 3)
366 ZEND_ARG_INFO(0, locale)
367 ZEND_ARG_INFO(0, date_type)
368 ZEND_ARG_INFO(0, time_type)
369 ZEND_ARG_INFO(0, timezone_str)
370 ZEND_ARG_INFO(0, calendar)
371 ZEND_ARG_INFO(0, pattern)
372 ZEND_END_ARG_INFO()
373
374 ZEND_BEGIN_ARG_INFO_EX(arginfo_idn_to_ascii, 0, 0, 1)
375 ZEND_ARG_INFO(0, domain)
376 ZEND_ARG_INFO(0, option)
377 ZEND_ARG_INFO(0, variant)
378 ZEND_ARG_INFO(1, idn_info)
379 ZEND_END_ARG_INFO()
380
381 ZEND_BEGIN_ARG_INFO_EX(arginfo_idn_to_utf8, 0, 0, 1)
382 ZEND_ARG_INFO(0, domain)
383 ZEND_ARG_INFO(0, option)
384 ZEND_ARG_INFO(0, variant)
385 ZEND_ARG_INFO(1, idn_info)
386 ZEND_END_ARG_INFO()
387
388 ZEND_BEGIN_ARG_INFO_EX( arginfo_resourcebundle_create_proc, 0, 0, 2 )
389 ZEND_ARG_INFO( 0, locale )
390 ZEND_ARG_INFO( 0, bundlename )
391 ZEND_ARG_INFO( 0, fallback )
392 ZEND_END_ARG_INFO()
393
394 ZEND_BEGIN_ARG_INFO_EX( arginfo_resourcebundle_get_proc, 0, 0, 2 )
395 ZEND_ARG_INFO( 0, bundle )
396 ZEND_ARG_INFO( 0, index )
397 ZEND_ARG_INFO( 0, fallback )
398 ZEND_END_ARG_INFO()
399
400 ZEND_BEGIN_ARG_INFO_EX( arginfo_resourcebundle_count_proc, 0, 0, 1 )
401 ZEND_ARG_INFO( 0, bundle )
402 ZEND_END_ARG_INFO()
403
404 ZEND_BEGIN_ARG_INFO_EX( arginfo_resourcebundle_locales_proc, 0, 0, 1 )
405 ZEND_ARG_INFO( 0, bundlename )
406 ZEND_END_ARG_INFO()
407
408 ZEND_BEGIN_ARG_INFO_EX( arginfo_resourcebundle_get_error_code_proc, 0, 0, 1 )
409 ZEND_ARG_INFO( 0, bundle )
410 ZEND_END_ARG_INFO()
411
412 ZEND_BEGIN_ARG_INFO_EX( arginfo_resourcebundle_get_error_message_proc, 0, 0, 1 )
413 ZEND_ARG_INFO( 0, bundle )
414 ZEND_END_ARG_INFO()
415
416 ZEND_BEGIN_ARG_INFO_EX( arginfo_transliterator_void, 0, 0, 0 )
417 ZEND_END_ARG_INFO()
418
419 ZEND_BEGIN_ARG_INFO_EX( arginfo_transliterator_create, 0, 0, 1 )
420 ZEND_ARG_INFO( 0, id )
421 ZEND_ARG_INFO( 0, direction )
422 ZEND_END_ARG_INFO()
423
424 ZEND_BEGIN_ARG_INFO_EX( arginfo_transliterator_create_from_rules, 0, 0, 1 )
425 ZEND_ARG_INFO( 0, rules )
426 ZEND_ARG_INFO( 0, direction )
427 ZEND_END_ARG_INFO()
428
429 ZEND_BEGIN_ARG_INFO_EX( arginfo_transliterator_create_inverse, 0, 0, 1 )
430 ZEND_ARG_OBJ_INFO( 0, orig_trans, Transliterator, 0 )
431 ZEND_END_ARG_INFO()
432
433 ZEND_BEGIN_ARG_INFO_EX( arginfo_transliterator_transliterate, 0, 0, 2 )
434 ZEND_ARG_INFO( 0, trans )
435 ZEND_ARG_INFO( 0, subject )
436 ZEND_ARG_INFO( 0, start )
437 ZEND_ARG_INFO( 0, end )
438 ZEND_END_ARG_INFO()
439
440 ZEND_BEGIN_ARG_INFO_EX( arginfo_transliterator_error, 0, 0, 1 )
441 ZEND_ARG_OBJ_INFO( 0, trans, Transliterator, 0 )
442 ZEND_END_ARG_INFO()
443
444 ZEND_BEGIN_ARG_INFO_EX( arginfo_tz_idarg_static, 0, 0, 1 )
445 ZEND_ARG_INFO( 0, zoneId )
446 ZEND_END_ARG_INFO()
447
448 ZEND_BEGIN_ARG_INFO_EX( arginfo_tz_from_date_time_zone, 0, 0, 1 )
449 ZEND_ARG_OBJ_INFO( 0, dateTimeZone, DateTimeZone, 0 )
450 ZEND_END_ARG_INFO()
451
452 ZEND_BEGIN_ARG_INFO_EX( arginfo_tz_create_enumeration, 0, 0, 0 )
453 ZEND_ARG_INFO( 0, countryOrRawOffset )
454 ZEND_END_ARG_INFO()
455
456 ZEND_BEGIN_ARG_INFO_EX( arginfo_tz_count_equivalent_ids, 0, 0, 1 )
457 ZEND_ARG_INFO( 0, zoneId )
458 ZEND_END_ARG_INFO()
459
460 ZEND_BEGIN_ARG_INFO_EX( arginfo_tz_create_time_zone_id_enumeration, 0, 0, 1 )
461 ZEND_ARG_INFO( 0, zoneType )
462 ZEND_ARG_INFO( 0, region )
463 ZEND_ARG_INFO( 0, rawOffset )
464 ZEND_END_ARG_INFO()
465
466 ZEND_BEGIN_ARG_INFO_EX( arginfo_tz_get_canonical_id, 0, 0, 1 )
467 ZEND_ARG_INFO( 0, zoneId )
468 ZEND_ARG_INFO( 1, isSystemID )
469 ZEND_END_ARG_INFO()
470
471 ZEND_BEGIN_ARG_INFO_EX( arginfo_tz_get_equivalent_id, 0, 0, 2 )
472 ZEND_ARG_INFO( 0, zoneId )
473 ZEND_ARG_INFO( 0, index )
474 ZEND_END_ARG_INFO()
475
476 ZEND_BEGIN_ARG_INFO_EX( arginfo_tz_get_offset, 0, 0, 5 )
477 ZEND_ARG_OBJ_INFO( 0, timeZone, IntlTimeZone, 0 )
478 ZEND_ARG_INFO( 0, date )
479 ZEND_ARG_INFO( 0, local )
480 ZEND_ARG_INFO( 1, rawOffset )
481 ZEND_ARG_INFO( 1, dstOffset )
482 ZEND_END_ARG_INFO()
483
484 ZEND_BEGIN_ARG_INFO_EX( arginfo_tz_has_same_rules, 0, 0, 1 )
485 ZEND_ARG_OBJ_INFO( 0, timeZone, IntlTimeZone, 0 )
486 ZEND_ARG_OBJ_INFO( 0, otherTimeZone, IntlTimeZone, 0 )
487 ZEND_END_ARG_INFO()
488
489 ZEND_BEGIN_ARG_INFO_EX( arginfo_tz_get_display_name, 0, 0, 1 )
490 ZEND_ARG_OBJ_INFO( 0, timeZone, IntlTimeZone, 0 )
491 ZEND_ARG_INFO( 0, isDaylight )
492 ZEND_ARG_INFO( 0, style )
493 ZEND_ARG_INFO( 0, locale )
494 ZEND_END_ARG_INFO()
495
496 ZEND_BEGIN_ARG_INFO_EX( arginfo_tz_only_tz, 0, 0, 1 )
497 ZEND_ARG_OBJ_INFO( 0, timeZone, IntlTimeZone, 0 )
498 ZEND_END_ARG_INFO()
499
500 ZEND_BEGIN_ARG_INFO_EX( arginfo_tz_void, 0, 0, 0 )
501 ZEND_END_ARG_INFO()
502
503 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_create_instance, 0, 0, 0 )
504 ZEND_ARG_INFO( 0, timeZone )
505 ZEND_ARG_INFO( 0, locale )
506 ZEND_END_ARG_INFO()
507
508 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_only_cal, 0, 0, 1 )
509 ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
510 ZEND_END_ARG_INFO()
511
512 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_void, 0, 0, 0 )
513 ZEND_END_ARG_INFO()
514
515 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_field, 0, 0, 2 )
516 ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
517 ZEND_ARG_INFO( 0, field )
518 ZEND_END_ARG_INFO()
519
520 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_dow, 0, 0, 2 )
521 ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
522 ZEND_ARG_INFO( 0, dayOfWeek )
523 ZEND_END_ARG_INFO()
524
525 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_other_cal, 0, 0, 2 )
526 ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
527 ZEND_ARG_OBJ_INFO( 0, otherCalendar, IntlCalendar, 0 )
528 ZEND_END_ARG_INFO()
529
530 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_date, 0, 0, 2 )
531 ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
532 ZEND_ARG_INFO( 0, date )
533 ZEND_END_ARG_INFO()
534
535 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_date_optional, 0, 0, 1 )
536 ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
537 ZEND_ARG_INFO( 0, date )
538 ZEND_END_ARG_INFO()
539
540 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_get_keyword_values_for_locale, 0, 0, 3)
541 ZEND_ARG_INFO( 0, key )
542 ZEND_ARG_INFO( 0, locale )
543 ZEND_ARG_INFO( 0, commonlyUsed )
544 ZEND_END_ARG_INFO()
545
546 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_add, 0, 0, 3 )
547 ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
548 ZEND_ARG_INFO( 0, field )
549 ZEND_ARG_INFO( 0, amount )
550 ZEND_END_ARG_INFO()
551
552 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_set_time_zone, 0, 0, 2 )
553 ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
554 ZEND_ARG_INFO( 0, timeZone )
555 ZEND_END_ARG_INFO()
556
557 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_set, 0, 0, 3 )
558 ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
559 ZEND_ARG_INFO( 0, fieldOrYear )
560 ZEND_ARG_INFO( 0, valueOrMonth )
561 ZEND_ARG_INFO( 0, dayOfMonth )
562 ZEND_ARG_INFO( 0, hour )
563 ZEND_ARG_INFO( 0, minute )
564 ZEND_ARG_INFO( 0, second )
565 ZEND_END_ARG_INFO()
566
567 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_roll, 0, 0, 2 )
568 ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
569 ZEND_ARG_INFO( 0, field )
570 ZEND_ARG_INFO( 0, amountOrUpOrDown )
571 ZEND_END_ARG_INFO()
572
573 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_clear, 0, 0, 1 )
574 ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
575 ZEND_ARG_INFO( 0, field )
576 ZEND_END_ARG_INFO()
577
578 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_field_difference, 0, 0, 3 )
579 ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
580 ZEND_ARG_INFO( 0, when )
581 ZEND_ARG_INFO( 0, field )
582 ZEND_END_ARG_INFO()
583
584 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_get_locale, 0, 0, 2 )
585 ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
586 ZEND_ARG_INFO( 0, localeType )
587 ZEND_END_ARG_INFO()
588
589 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_set_lenient, 0, 0, 2 )
590 ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
591 ZEND_ARG_INFO( 0, isLenient )
592 ZEND_END_ARG_INFO()
593
594 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_set_minimal_days_in_first_week, 0, 0, 2 )
595 ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
596 ZEND_ARG_INFO( 0, numberOfDays )
597 ZEND_END_ARG_INFO()
598
599 ZEND_BEGIN_ARG_INFO_EX(ainfo_cal_from_date_time, 0, 0, 1)
600 ZEND_ARG_INFO(0, dateTime)
601 ZEND_END_ARG_INFO()
602
603 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_wall_time_option, 0, 0, 2 )
604 ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
605 ZEND_ARG_INFO( 0, wallTimeOption )
606 ZEND_END_ARG_INFO()
607
608
609 ZEND_BEGIN_ARG_INFO_EX( ainfo_gregcal_create_instance, 0, 0, 0 )
610 ZEND_ARG_INFO(0, timeZoneOrYear)
611 ZEND_ARG_INFO(0, localeOrMonth)
612 ZEND_ARG_INFO(0, dayOfMonth)
613 ZEND_ARG_INFO(0, hour)
614 ZEND_ARG_INFO(0, minute)
615 ZEND_ARG_INFO(0, second)
616 ZEND_END_ARG_INFO()
617
618 ZEND_BEGIN_ARG_INFO_EX( ainfo_gregcal_is_leap_year, 0, 0, 2 )
619 ZEND_ARG_OBJ_INFO( 0, calendar, IntlGregorianCalendar, 0 )
620 ZEND_ARG_INFO( 0, year )
621 ZEND_END_ARG_INFO()
622
623 ZEND_BEGIN_ARG_INFO_EX( ainfo_gregcal_only_gregcal, 0, 0, 1 )
624 ZEND_ARG_OBJ_INFO( 0, calendar, IntlGregorianCalendar, 0 )
625 ZEND_END_ARG_INFO()
626
627 ZEND_BEGIN_ARG_INFO_EX( ainfo_gregcal_set_gregorian_change, 0, 0, 2 )
628 ZEND_ARG_OBJ_INFO( 0, calendar, IntlGregorianCalendar, 0 )
629 ZEND_ARG_INFO( 0, date )
630 ZEND_END_ARG_INFO()
631
632
633
634
635
636
637
638 zend_function_entry intl_functions[] = {
639
640
641 PHP_FE( collator_create, collator_static_1_arg )
642 PHP_FE( collator_compare, collator_2_args )
643 PHP_FE( collator_get_attribute, collator_1_arg )
644 PHP_FE( collator_set_attribute, collator_2_args )
645 PHP_FE( collator_get_strength, collator_0_args )
646 PHP_FE( collator_set_strength, collator_1_arg )
647 PHP_FE( collator_sort, collator_sort_args )
648 PHP_FE( collator_sort_with_sort_keys, collator_sort_args )
649 PHP_FE( collator_asort, collator_sort_args )
650 PHP_FE( collator_get_locale, collator_1_arg )
651 PHP_FE( collator_get_error_code, collator_0_args )
652 PHP_FE( collator_get_error_message, collator_0_args )
653 PHP_FE( collator_get_sort_key, collator_2_args )
654
655
656 PHP_FE( numfmt_create, arginfo_numfmt_create )
657 PHP_FE( numfmt_format, arginfo_numfmt_format )
658 PHP_FE( numfmt_parse, numfmt_parse_arginfo )
659 PHP_FE( numfmt_format_currency, arginfo_numfmt_format_currency )
660 PHP_FE( numfmt_parse_currency, numfmt_parse_currency_arginfo )
661 PHP_FE( numfmt_set_attribute, arginfo_numfmt_set_attribute )
662 PHP_FE( numfmt_get_attribute, arginfo_numfmt_get_attribute )
663 PHP_FE( numfmt_set_text_attribute, arginfo_numfmt_set_attribute )
664 PHP_FE( numfmt_get_text_attribute, arginfo_numfmt_get_attribute )
665 PHP_FE( numfmt_set_symbol, arginfo_numfmt_set_symbol )
666 PHP_FE( numfmt_get_symbol, arginfo_numfmt_get_attribute )
667 PHP_FE( numfmt_set_pattern, arginfo_numfmt_set_pattern )
668 PHP_FE( numfmt_get_pattern, arginfo_numfmt_get_error_code )
669 PHP_FE( numfmt_get_locale, arginfo_numfmt_get_locale )
670 PHP_FE( numfmt_get_error_code, arginfo_numfmt_get_error_code )
671 PHP_FE( numfmt_get_error_message, arginfo_numfmt_get_error_code )
672
673
674 PHP_FE( normalizer_normalize, normalizer_args )
675 PHP_FE( normalizer_is_normalized, normalizer_args )
676
677
678 PHP_NAMED_FE( locale_get_default, zif_locale_get_default, locale_0_args )
679 PHP_NAMED_FE( locale_set_default, zif_locale_set_default, locale_1_arg )
680 PHP_FE( locale_get_primary_language, locale_1_arg )
681 PHP_FE( locale_get_script, locale_1_arg )
682 PHP_FE( locale_get_region, locale_1_arg )
683 PHP_FE( locale_get_keywords, locale_1_arg )
684 PHP_FE( locale_get_display_script, locale_2_args )
685 PHP_FE( locale_get_display_region, locale_2_args )
686 PHP_FE( locale_get_display_name, locale_2_args )
687 PHP_FE( locale_get_display_language, locale_2_args)
688 PHP_FE( locale_get_display_variant, locale_2_args )
689 PHP_FE( locale_compose, locale_1_arg )
690 PHP_FE( locale_parse, locale_1_arg )
691 PHP_FE( locale_get_all_variants, locale_1_arg )
692 PHP_FE( locale_filter_matches, locale_3_args )
693 PHP_FE( locale_canonicalize, locale_1_arg )
694 PHP_FE( locale_lookup, locale_4_args )
695 PHP_FE( locale_accept_from_http, locale_1_arg )
696
697
698 PHP_FE( msgfmt_create, arginfo_msgfmt_create )
699 PHP_FE( msgfmt_format, arginfo_msgfmt_format )
700 PHP_FE( msgfmt_format_message, arginfo_msgfmt_format_message )
701 PHP_FE( msgfmt_parse, arginfo_msgfmt_parse )
702 PHP_FE( msgfmt_parse_message, arginfo_numfmt_parse_message )
703 PHP_FE( msgfmt_set_pattern, arginfo_msgfmt_set_pattern )
704 PHP_FE( msgfmt_get_pattern, arginfo_msgfmt_get_locale )
705 PHP_FE( msgfmt_get_locale, arginfo_msgfmt_get_locale )
706 PHP_FE( msgfmt_get_error_code, arginfo_msgfmt_get_error_code )
707 PHP_FE( msgfmt_get_error_message, arginfo_msgfmt_get_error_message )
708
709
710 PHP_FE( datefmt_create, arginfo_datefmt_create )
711 PHP_FE( datefmt_get_datetype, arginfo_msgfmt_get_locale )
712 PHP_FE( datefmt_get_timetype, arginfo_msgfmt_get_locale )
713 PHP_FE( datefmt_get_calendar, arginfo_msgfmt_get_locale )
714 PHP_FE( datefmt_get_calendar_object, arginfo_msgfmt_get_locale )
715 PHP_FE( datefmt_set_calendar, arginfo_datefmt_set_calendar )
716 PHP_FE( datefmt_get_locale, arginfo_msgfmt_get_locale )
717 PHP_FE( datefmt_get_timezone_id, arginfo_msgfmt_get_locale )
718 PHP_FE( datefmt_get_timezone, arginfo_msgfmt_get_locale )
719 PHP_FE( datefmt_set_timezone, arginfo_datefmt_set_timezone )
720 PHP_FE( datefmt_get_pattern, arginfo_msgfmt_get_locale )
721 PHP_FE( datefmt_set_pattern, arginfo_datefmt_set_pattern )
722 PHP_FE( datefmt_is_lenient, arginfo_msgfmt_get_locale )
723 PHP_FE( datefmt_set_lenient, arginfo_msgfmt_get_locale )
724 PHP_FE( datefmt_format, arginfo_datefmt_format )
725 PHP_FE( datefmt_format_object, arginfo_datefmt_format_object )
726 PHP_FE( datefmt_parse, datefmt_parse_args )
727 PHP_FE( datefmt_localtime , datefmt_parse_args )
728 PHP_FE( datefmt_get_error_code, arginfo_msgfmt_get_error_code )
729 PHP_FE( datefmt_get_error_message, arginfo_msgfmt_get_error_message )
730
731
732 PHP_FE( grapheme_strlen, grapheme_1_arg )
733 PHP_FE( grapheme_strpos, grapheme_search_args )
734 PHP_FE( grapheme_stripos, grapheme_search_args )
735 PHP_FE( grapheme_strrpos, grapheme_search_args )
736 PHP_FE( grapheme_strripos, grapheme_search_args )
737 PHP_FE( grapheme_substr, grapheme_substr_args )
738 PHP_FE( grapheme_strstr, grapheme_strstr_args )
739 PHP_FE( grapheme_stristr, grapheme_strstr_args )
740 PHP_FE( grapheme_extract, grapheme_extract_args )
741
742
743 PHP_FE( idn_to_ascii, arginfo_idn_to_ascii)
744 PHP_FE( idn_to_utf8, arginfo_idn_to_ascii)
745
746
747 PHP_FE( resourcebundle_create, arginfo_resourcebundle_create_proc )
748 PHP_FE( resourcebundle_get, arginfo_resourcebundle_get_proc )
749 PHP_FE( resourcebundle_count, arginfo_resourcebundle_count_proc )
750 PHP_FE( resourcebundle_locales, arginfo_resourcebundle_locales_proc )
751 PHP_FE( resourcebundle_get_error_code, arginfo_resourcebundle_get_error_code_proc )
752 PHP_FE( resourcebundle_get_error_message, arginfo_resourcebundle_get_error_message_proc )
753
754
755 PHP_FE( transliterator_create, arginfo_transliterator_create )
756 PHP_FE( transliterator_create_from_rules, arginfo_transliterator_create_from_rules )
757 PHP_FE( transliterator_list_ids, arginfo_transliterator_void )
758 PHP_FE( transliterator_create_inverse, arginfo_transliterator_create_inverse)
759 PHP_FE( transliterator_transliterate, arginfo_transliterator_transliterate )
760 PHP_FE( transliterator_get_error_code, arginfo_transliterator_error )
761 PHP_FE( transliterator_get_error_message, arginfo_transliterator_error )
762
763
764 PHP_FE( intltz_create_time_zone, arginfo_tz_idarg_static )
765 PHP_FE( intltz_from_date_time_zone, arginfo_tz_from_date_time_zone )
766 PHP_FE( intltz_create_default, arginfo_tz_void )
767 PHP_FE( intltz_get_id, arginfo_tz_only_tz )
768 PHP_FE( intltz_get_gmt, arginfo_tz_void )
769 #if U_ICU_VERSION_MAJOR_NUM >= 49
770 PHP_FE( intltz_get_unknown, arginfo_tz_void )
771 #endif
772 PHP_FE( intltz_create_enumeration, arginfo_tz_create_enumeration )
773 PHP_FE( intltz_count_equivalent_ids, arginfo_tz_idarg_static )
774 #if U_ICU_VERSION_MAJOR_NUM * 10 + U_ICU_VERSION_MINOR_NUM >= 48
775 PHP_FE( intltz_create_time_zone_id_enumeration, arginfo_tz_create_time_zone_id_enumeration )
776 #endif
777 PHP_FE( intltz_get_canonical_id, arginfo_tz_get_canonical_id )
778 #if U_ICU_VERSION_MAJOR_NUM * 10 + U_ICU_VERSION_MINOR_NUM >= 48
779 PHP_FE( intltz_get_region, arginfo_tz_idarg_static )
780 #endif
781 PHP_FE( intltz_get_tz_data_version, arginfo_tz_void )
782 PHP_FE( intltz_get_equivalent_id, arginfo_tz_get_equivalent_id )
783 PHP_FE( intltz_use_daylight_time, arginfo_tz_only_tz )
784 PHP_FE( intltz_get_offset, arginfo_tz_get_offset )
785 PHP_FE( intltz_get_raw_offset, arginfo_tz_only_tz )
786 PHP_FE( intltz_has_same_rules, arginfo_tz_has_same_rules )
787 PHP_FE( intltz_get_display_name, arginfo_tz_get_display_name )
788 PHP_FE( intltz_get_dst_savings, arginfo_tz_only_tz )
789 PHP_FE( intltz_to_date_time_zone, arginfo_tz_only_tz )
790 PHP_FE( intltz_get_error_code, arginfo_tz_only_tz )
791 PHP_FE( intltz_get_error_message, arginfo_tz_only_tz )
792
793 PHP_FE( intlcal_create_instance, ainfo_cal_create_instance )
794 #if U_ICU_VERSION_MAJOR_NUM * 10 + U_ICU_VERSION_MINOR_NUM >= 42
795 PHP_FE( intlcal_get_keyword_values_for_locale, ainfo_cal_get_keyword_values_for_locale )
796 #endif
797 PHP_FE( intlcal_get_now, ainfo_cal_void )
798 PHP_FE( intlcal_get_available_locales, ainfo_cal_void )
799 PHP_FE( intlcal_get, ainfo_cal_field )
800 PHP_FE( intlcal_get_time, ainfo_cal_only_cal )
801 PHP_FE( intlcal_set_time, ainfo_cal_date )
802 PHP_FE( intlcal_add, ainfo_cal_add )
803 PHP_FE( intlcal_set_time_zone, ainfo_cal_set_time_zone )
804 PHP_FE( intlcal_after, ainfo_cal_other_cal )
805 PHP_FE( intlcal_before, ainfo_cal_other_cal )
806 PHP_FE( intlcal_set, ainfo_cal_set )
807 PHP_FE( intlcal_roll, ainfo_cal_roll )
808 PHP_FE( intlcal_clear, ainfo_cal_clear )
809 PHP_FE( intlcal_field_difference, ainfo_cal_field_difference )
810 PHP_FE( intlcal_get_actual_maximum, ainfo_cal_field )
811 PHP_FE( intlcal_get_actual_minimum, ainfo_cal_field )
812 #if U_ICU_VERSION_MAJOR_NUM * 10 + U_ICU_VERSION_MINOR_NUM >= 44
813 PHP_FE( intlcal_get_day_of_week_type, ainfo_cal_dow )
814 #endif
815 PHP_FE( intlcal_get_first_day_of_week, ainfo_cal_only_cal )
816 PHP_FE( intlcal_get_greatest_minimum, ainfo_cal_field )
817 PHP_FE( intlcal_get_least_maximum, ainfo_cal_field )
818 PHP_FE( intlcal_get_locale, ainfo_cal_get_locale )
819 PHP_FE( intlcal_get_maximum, ainfo_cal_field )
820 PHP_FE( intlcal_get_minimal_days_in_first_week, ainfo_cal_only_cal )
821 PHP_FE( intlcal_get_minimum, ainfo_cal_field )
822 PHP_FE( intlcal_get_time_zone, ainfo_cal_only_cal )
823 PHP_FE( intlcal_get_type, ainfo_cal_only_cal )
824 #if U_ICU_VERSION_MAJOR_NUM * 10 + U_ICU_VERSION_MINOR_NUM >= 44
825 PHP_FE( intlcal_get_weekend_transition, ainfo_cal_dow )
826 #endif
827 PHP_FE( intlcal_in_daylight_time, ainfo_cal_only_cal )
828 PHP_FE( intlcal_is_equivalent_to, ainfo_cal_other_cal )
829 PHP_FE( intlcal_is_lenient, ainfo_cal_only_cal )
830 PHP_FE( intlcal_is_set, ainfo_cal_field )
831 #if U_ICU_VERSION_MAJOR_NUM * 10 + U_ICU_VERSION_MINOR_NUM >= 44
832 PHP_FE( intlcal_is_weekend, ainfo_cal_date_optional )
833 #endif
834 PHP_FE( intlcal_set_first_day_of_week, ainfo_cal_dow )
835 PHP_FE( intlcal_set_lenient, ainfo_cal_set_lenient )
836 PHP_FE( intlcal_set_minimal_days_in_first_week, ainfo_cal_set_minimal_days_in_first_week )
837 PHP_FE( intlcal_equals, ainfo_cal_other_cal )
838 PHP_FE( intlcal_from_date_time, ainfo_cal_from_date_time )
839 PHP_FE( intlcal_to_date_time, ainfo_cal_only_cal )
840 #if U_ICU_VERSION_MAJOR_NUM >= 49
841 PHP_FE( intlcal_get_repeated_wall_time_option, ainfo_cal_only_cal )
842 PHP_FE( intlcal_get_skipped_wall_time_option, ainfo_cal_only_cal )
843 PHP_FE( intlcal_set_repeated_wall_time_option, ainfo_cal_wall_time_option )
844 PHP_FE( intlcal_set_skipped_wall_time_option, ainfo_cal_wall_time_option )
845 #endif
846 PHP_FE( intlcal_get_error_code, ainfo_cal_only_cal )
847 PHP_FE( intlcal_get_error_message, ainfo_cal_only_cal )
848
849 PHP_FE( intlgregcal_create_instance, ainfo_gregcal_create_instance )
850 PHP_FE( intlgregcal_set_gregorian_change, ainfo_gregcal_set_gregorian_change )
851 PHP_FE( intlgregcal_get_gregorian_change, ainfo_gregcal_only_gregcal )
852 PHP_FE( intlgregcal_is_leap_year, ainfo_gregcal_is_leap_year )
853
854
855 PHP_FE( intl_get_error_code, intl_0_args )
856 PHP_FE( intl_get_error_message, intl_0_args )
857 PHP_FE( intl_is_failure, intl_1_arg )
858 PHP_FE( intl_error_name, intl_1_arg )
859
860 PHP_FE_END
861 };
862
863
864
865 PHP_INI_BEGIN()
866 STD_PHP_INI_ENTRY(LOCALE_INI_NAME, NULL, PHP_INI_ALL, OnUpdateStringUnempty, default_locale, zend_intl_globals, intl_globals)
867 STD_PHP_INI_ENTRY("intl.error_level", "0", PHP_INI_ALL, OnUpdateLong, error_level, zend_intl_globals, intl_globals)
868 STD_PHP_INI_ENTRY("intl.use_exceptions", "0", PHP_INI_ALL, OnUpdateBool, use_exceptions, zend_intl_globals, intl_globals)
869 PHP_INI_END()
870
871
872 static PHP_GINIT_FUNCTION(intl);
873
874
875 zend_module_entry intl_module_entry = {
876 STANDARD_MODULE_HEADER,
877 "intl",
878 intl_functions,
879 PHP_MINIT( intl ),
880 PHP_MSHUTDOWN( intl ),
881 PHP_RINIT( intl ),
882 PHP_RSHUTDOWN( intl ),
883 PHP_MINFO( intl ),
884 INTL_MODULE_VERSION,
885 PHP_MODULE_GLOBALS(intl),
886 PHP_GINIT(intl),
887 NULL,
888 NULL,
889 STANDARD_MODULE_PROPERTIES_EX
890 };
891
892
893 #ifdef COMPILE_DL_INTL
894 #ifdef ZTS
895 ZEND_TSRMLS_CACHE_DEFINE()
896 #endif
897 ZEND_GET_MODULE( intl )
898 #endif
899
900
901 static PHP_GINIT_FUNCTION(intl)
902 {
903 #if defined(COMPILE_DL_INTL) && defined(ZTS)
904 ZEND_TSRMLS_CACHE_UPDATE();
905 #endif
906 memset( intl_globals, 0, sizeof(zend_intl_globals) );
907 }
908
909
910
911
912 PHP_MINIT_FUNCTION( intl )
913 {
914
915 REGISTER_INI_ENTRIES();
916
917 REGISTER_LONG_CONSTANT("INTL_MAX_LOCALE_LEN", INTL_MAX_LOCALE_LEN, CONST_PERSISTENT | CONST_CS);
918 REGISTER_STRING_CONSTANT("INTL_ICU_VERSION", U_ICU_VERSION, CONST_PERSISTENT | CONST_CS);
919 #ifdef U_ICU_DATA_VERSION
920 REGISTER_STRING_CONSTANT("INTL_ICU_DATA_VERSION", U_ICU_DATA_VERSION, CONST_PERSISTENT | CONST_CS);
921 #endif
922
923
924 collator_register_Collator_class( );
925
926
927 collator_register_constants( INIT_FUNC_ARGS_PASSTHRU );
928
929
930 formatter_register_class( );
931
932
933 formatter_register_constants( INIT_FUNC_ARGS_PASSTHRU );
934
935
936 normalizer_register_Normalizer_class( );
937
938
939 normalizer_register_constants( INIT_FUNC_ARGS_PASSTHRU );
940
941
942 locale_register_Locale_class( );
943
944
945 locale_register_constants( INIT_FUNC_ARGS_PASSTHRU );
946
947 msgformat_register_class();
948
949 grapheme_register_constants( INIT_FUNC_ARGS_PASSTHRU );
950
951
952 dateformat_register_IntlDateFormatter_class( );
953
954
955 dateformat_register_constants( INIT_FUNC_ARGS_PASSTHRU );
956
957
958 resourcebundle_register_class( );
959
960
961 transliterator_register_Transliterator_class( );
962
963
964 transliterator_register_constants( INIT_FUNC_ARGS_PASSTHRU );
965
966
967 timezone_register_IntlTimeZone_class( );
968
969
970 calendar_register_IntlCalendar_class( );
971
972
973 intl_expose_icu_error_codes( INIT_FUNC_ARGS_PASSTHRU );
974
975
976 idn_register_constants(INIT_FUNC_ARGS_PASSTHRU);
977
978 #if U_ICU_VERSION_MAJOR_NUM * 1000 + U_ICU_VERSION_MINOR_NUM >= 4002
979
980 spoofchecker_register_Spoofchecker_class( );
981
982
983 spoofchecker_register_constants( INIT_FUNC_ARGS_PASSTHRU );
984 #endif
985
986
987 intl_register_IntlException_class( );
988
989
990 intl_register_IntlIterator_class( );
991
992
993 breakiterator_register_BreakIterator_class( );
994
995
996 breakiterator_register_IntlPartsIterator_class( );
997
998
999 intl_error_init( NULL );
1000
1001
1002 php_converter_minit(INIT_FUNC_ARGS_PASSTHRU);
1003
1004
1005 php_uchar_minit(INIT_FUNC_ARGS_PASSTHRU);
1006
1007 return SUCCESS;
1008 }
1009
1010
1011 #define EXPLICIT_CLEANUP_ENV_VAR "INTL_EXPLICIT_CLEANUP"
1012
1013
1014
1015 PHP_MSHUTDOWN_FUNCTION( intl )
1016 {
1017 const char *cleanup;
1018
1019 UNREGISTER_INI_ENTRIES();
1020
1021 cleanup = getenv(EXPLICIT_CLEANUP_ENV_VAR);
1022 if (cleanup != NULL && !(cleanup[0] == '0' && cleanup[1] == '\0')) {
1023 u_cleanup();
1024 }
1025
1026 return SUCCESS;
1027 }
1028
1029
1030
1031
1032 PHP_RINIT_FUNCTION( intl )
1033 {
1034 return SUCCESS;
1035 }
1036
1037
1038
1039
1040 PHP_RSHUTDOWN_FUNCTION( intl )
1041 {
1042 if(!Z_ISUNDEF(INTL_G(current_collator))) {
1043 ZVAL_UNDEF(&INTL_G(current_collator));
1044 }
1045 if (INTL_G(grapheme_iterator)) {
1046 grapheme_close_global_iterator( );
1047 INTL_G(grapheme_iterator) = NULL;
1048 }
1049
1050 intl_error_reset( NULL);
1051 return SUCCESS;
1052 }
1053
1054
1055
1056
1057 PHP_MINFO_FUNCTION( intl )
1058 {
1059 php_info_print_table_start();
1060 php_info_print_table_header( 2, "Internationalization support", "enabled" );
1061 php_info_print_table_row( 2, "version", INTL_MODULE_VERSION );
1062 php_info_print_table_row( 2, "ICU version", U_ICU_VERSION );
1063 #ifdef U_ICU_DATA_VERSION
1064 php_info_print_table_row( 2, "ICU Data version", U_ICU_DATA_VERSION );
1065 #endif
1066 php_info_print_table_end();
1067
1068
1069 DISPLAY_INI_ENTRIES() ;
1070 }
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080