1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00
Files
archived-php-src/ext/spl/tests/bug72051.phpt
Tim Düsterhus 08b2ab22f4 Include the source location in Closure names (#13550)
* Include the source location in Closure names

This change makes stack traces involving Closures, especially multiple
different Closures, much more useful, because it's more easily visible *which*
closure was called for a given stack frame.

The implementation is similar to that of anonymous classes which already
include the file name and line number within their generated classname.

* Update scripts/dev/bless_tests.php for closure naming

* Adjust existing tests for closure naming

* Adjust tests for closure naming that were not caught locally

* Drop the namespace from closure names

This is redundant with the included filename.

* Include filename and line number as separate keys in Closure debug info

* Fix test

* Fix test

* Include the surrounding class and function name in closure names

* Fix test

* Relax test expecations

* Fix tests after merge

* NEWS / UPGRADING
2024-04-12 18:21:13 +02:00

27 lines
541 B
PHP

--TEST--
Bug #72051 (The reference in CallbackFilterIterator doesn't work as expected)
--FILE--
<?php
$data = [
[1,2]
];
$callbackTest = new CallbackFilterIterator(new ArrayIterator($data), function (&$current) {
$current['message'] = 'Test message';
return true;
});
$callbackTest->rewind();
$data = $callbackTest->current();
$callbackTest->next();
print_r($data);
?>
--EXPECTF--
Warning: {closure:%s:%d}(): Argument #1 ($current) must be passed by reference, value given in %s on line %d
Array
(
[0] => 1
[1] => 2
)