/
vshmidt
/
php
Обзор
Документация
Войти
/
vshmidt
/
php
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
ext/reflection/tests/ReflectionGenerator_in_Generator.phpt
89 строк
2 KB
Tim Düsterhus
Make `ReflectionGenerator::getFunction()` legal after generator termination (#14167)
21 май 2024, 09:54
Не верифицирован
21 май 2024, 09:54
8094bd1
Код
Авторство
О чём код?
--TEST-- ReflectionGenerator while being currently executed --FILE-- <?php function call(ReflectionGenerator $ref, $method, $rec = true) { if ($rec) { call($ref, $method, false); return; } var_dump($ref->$method()); } function doCalls(ReflectionGenerator $ref) { call($ref, "getTrace"); call($ref, "getExecutingLine"); call($ref, "getExecutingFile"); call($ref, "getExecutingGenerator"); call($ref, "getFunction"); call($ref, "getThis"); } ($gen = (function() use (&$gen) { $ref = new ReflectionGenerator($gen); doCalls($ref); yield from (function() use ($ref) { doCalls($ref); yield; // Generator ! })(); })())->next(); ?> --EXPECTF-- array(1) { [0]=> array(2) { ["function"]=> string(%d) "{closure:%s:%d}" ["args"]=> array(0) { } } } int(%d) string(%d) "%sReflectionGenerator_in_Generator.%s" object(Generator)#%d (1) { ["function"]=> string(%d) "{closure:%s:%d}" } object(ReflectionFunction)#4 (1) { ["name"]=> string(%d) "{closure:%s:%d}" } NULL array(2) { [0]=> array(4) { ["file"]=> string(%d) "%s" ["line"]=> int(%d) ["function"]=> string(%d) "{closure:%s:%d}" ["args"]=> array(0) { } } [1]=> array(2) { ["function"]=> string(%d) "{closure:%s:%d}" ["args"]=> array(0) { } } } int(%d) string(%d) "%sReflectionGenerator_in_Generator.%s" object(Generator)#%d (1) { ["function"]=> string(%d) "{closure:%s:%d}" } object(ReflectionFunction)#6 (1) { ["name"]=> string(%d) "{closure:%s:%d}" } NULL