1--TEST-- 2msgfmt creation failures icu >= 4.8 3--EXTENSIONS-- 4intl 5--FILE-- 6<?php 7 8function err($fmt) { 9 if(!$fmt) { 10 echo var_export(intl_get_error_message(), true)."\n"; 11 } 12} 13 14function print_exception($e) { 15 echo "\n" . get_class($e) . ": " . $e->getMessage() 16 . " in " . $e->getFile() . " on line " . $e->getLine() . "\n"; 17} 18 19function crt($t, $l, $s) { 20 switch(true) { 21 case $t == "O": 22 try { 23 return new MessageFormatter($l, $s); 24 } catch (Throwable $e) { 25 print_exception($e); 26 return null; 27 } 28 break; 29 case $t == "C": 30 try { 31 return MessageFormatter::create($l, $s); 32 } catch (Throwable $e) { 33 print_exception($e); 34 return null; 35 } 36 break; 37 case $t == "P": 38 try { 39 return msgfmt_create($l, $s); 40 } catch (Throwable $e) { 41 print_exception($e); 42 return null; 43 } 44 break; 45 } 46} 47 48$args = array( 49 array(null, null), 50 array("whatever", "{0,whatever}"), 51 array(array(), array()), 52 array("en", "{0,choice}"), 53 array("fr", "{0,"), 54 array("en_US", "\xD0"), 55); 56 57try { 58 $fmt = new MessageFormatter(); 59} catch (TypeError $e) { 60 print_exception($e); 61 $fmt = null; 62} 63err($fmt); 64try { 65 $fmt = msgfmt_create(); 66} catch (TypeError $e) { 67 print_exception($e); 68 $fmt = null; 69} 70err($fmt); 71try { 72 $fmt = MessageFormatter::create(); 73} catch (TypeError $e) { 74 print_exception($e); 75 $fmt = null; 76} 77err($fmt); 78try { 79 $fmt = new MessageFormatter('en'); 80} catch (TypeError $e) { 81 print_exception($e); 82 $fmt = null; 83} 84err($fmt); 85try { 86 $fmt = msgfmt_create('en'); 87} catch (TypeError $e) { 88 print_exception($e); 89 $fmt = null; 90} 91err($fmt); 92try { 93 $fmt = MessageFormatter::create('en'); 94} catch (TypeError $e) { 95 print_exception($e); 96 $fmt = null; 97} 98err($fmt); 99 100foreach($args as $arg) { 101 $fmt = crt("O", $arg[0], $arg[1]); 102 err($fmt); 103 $fmt = crt("C", $arg[0], $arg[1]); 104 err($fmt); 105 $fmt = crt("P", $arg[0], $arg[1]); 106 err($fmt); 107} 108 109?> 110--EXPECTF-- 111ArgumentCountError: MessageFormatter::__construct() expects exactly 2 arguments, 0 given in %s on line %d 112'U_ZERO_ERROR' 113 114ArgumentCountError: msgfmt_create() expects exactly 2 arguments, 0 given in %s on line %d 115'U_ZERO_ERROR' 116 117ArgumentCountError: MessageFormatter::create() expects exactly 2 arguments, 0 given in %s on line %d 118'U_ZERO_ERROR' 119 120ArgumentCountError: MessageFormatter::__construct() expects exactly 2 arguments, 1 given in %s on line %d 121'U_ZERO_ERROR' 122 123ArgumentCountError: msgfmt_create() expects exactly 2 arguments, 1 given in %s on line %d 124'U_ZERO_ERROR' 125 126ArgumentCountError: MessageFormatter::create() expects exactly 2 arguments, 1 given in %s on line %d 127'U_ZERO_ERROR' 128 129Deprecated: MessageFormatter::__construct(): Passing null to parameter #1 ($locale) of type string is deprecated in %s on line %d 130 131Deprecated: MessageFormatter::__construct(): Passing null to parameter #2 ($pattern) of type string is deprecated in %s on line %d 132 133IntlException: msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR in %s on line %d 134'msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR' 135 136Deprecated: MessageFormatter::create(): Passing null to parameter #1 ($locale) of type string is deprecated in %s on line %d 137 138Deprecated: MessageFormatter::create(): Passing null to parameter #2 ($pattern) of type string is deprecated in %s on line %d 139'msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR' 140 141Deprecated: msgfmt_create(): Passing null to parameter #1 ($locale) of type string is deprecated in %s on line %d 142 143Deprecated: msgfmt_create(): Passing null to parameter #2 ($pattern) of type string is deprecated in %s on line %d 144'msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR' 145 146IntlException: msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR in %s on line %d 147'msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR' 148'msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR' 149'msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR' 150 151TypeError: MessageFormatter::__construct(): Argument #1 ($locale) must be of type string, array given in %s on line %d 152'U_ZERO_ERROR' 153 154TypeError: MessageFormatter::create(): Argument #1 ($locale) must be of type string, array given in %s on line %d 155'U_ZERO_ERROR' 156 157TypeError: msgfmt_create(): Argument #1 ($locale) must be of type string, array given in %s on line %d 158'U_ZERO_ERROR' 159 160IntlException: pattern syntax error (parse error at offset 1, after "{", before or at "0,choice}"): U_PATTERN_SYNTAX_ERROR in %s on line %d 161'pattern syntax error (parse error at offset 1, after "{", before or at "0,choice}"): U_PATTERN_SYNTAX_ERROR' 162'pattern syntax error (parse error at offset 1, after "{", before or at "0,choice}"): U_PATTERN_SYNTAX_ERROR' 163'pattern syntax error (parse error at offset 1, after "{", before or at "0,choice}"): U_PATTERN_SYNTAX_ERROR' 164 165IntlException: msgfmt_create: message formatter creation failed: U_UNMATCHED_BRACES in %s on line %d 166'msgfmt_create: message formatter creation failed: U_UNMATCHED_BRACES' 167'msgfmt_create: message formatter creation failed: U_UNMATCHED_BRACES' 168'msgfmt_create: message formatter creation failed: U_UNMATCHED_BRACES' 169 170IntlException: msgfmt_create: error converting pattern to UTF-16: U_INVALID_CHAR_FOUND in %s on line %d 171'msgfmt_create: error converting pattern to UTF-16: U_INVALID_CHAR_FOUND' 172'msgfmt_create: error converting pattern to UTF-16: U_INVALID_CHAR_FOUND' 173'msgfmt_create: error converting pattern to UTF-16: U_INVALID_CHAR_FOUND' 174