1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 08:12:21 +01:00
Files
archived-php-src/ext/intl/tests/resourcebundle_arrayaccess.phpt
Gina Peter Banyard 6600d0e00f ext/intl: Refactor error handling (#19196)
This is a comprehensive refactoring of the error mechanism of the Intl extension.

By moving the prefixing of the current method/function being executed to actual error message creation by accessing the execution context, we get the following benefits:
- Accurate error messages indicating *what* call caused the error
  - As we *always* "copy" the message, the `copyMsg` arg becomes unused, meaning we can reduce the size of the `intl_error` struct by 4 bytes.
  - Saving it as a zend_string means we know the length of the message
- Remove the need to pass around a "function name" `char*` across multiple calls
- Use Intl's exception mechanism to generate exceptions for constructor call
  - This removes the need for replacing the error handler
  - Which didn't do anything anyway in silent mode, which required throwing non-descriptive exceptions
2025-07-30 16:00:37 +01:00

58 lines
1.1 KiB
PHP

--TEST--
Test ResourceBundle array access and count - existing/missing keys
--EXTENSIONS--
intl
--FILE--
<?php
include "resourcebundle.inc";
// fall back
$r = new ResourceBundle( 'en_US', BUNDLE );
printf( "length: %d\n", count($r) );
printf( "teststring: %s\n", $r['teststring'] );
printf( "testint: %d\n", $r['testint'] );
print_r( $r['testvector'] );
printf( "testbin: %s\n", bin2hex($r['testbin']) );
$r2 = $r['testtable'];
printf( "testtable: %d\n", $r2['major'] );
$r2 = $r['testarray'];
printf( "testarray: %s\n", $r2[2] );
echo "Using a reference as an offset:\n";
$offset = 'teststring';
$ref = &$offset;
var_dump($r[$ref]);
$t = $r['nonexisting'];
echo debug( $t );
?>
--EXPECT--
length: 6
teststring: Hello World!
testint: 2
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
[6] => 7
[7] => 8
[8] => 9
[9] => 0
)
testbin: a1b2c3d4e5f67890
testtable: 3
testarray: string 3
Using a reference as an offset:
string(12) "Hello World!"
NULL
2: main(): Cannot load resource element 'nonexisting': U_MISSING_RESOURCE_ERROR