/
vshmidt
/
php
Обзор
Документация
Войти
/
vshmidt
/
php
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
ext/reflection/tests/closures_bound_getDeclaringFunction.phpt
43 строки
1 KB
Gina Peter Banyard
ext/reflection: Add test for ReflectionParameter::getDeclaringFunction() with a ReflectionMethod creation from a Closure (#13987)
17 апр 2024, 22:36
Не верифицирован
17 апр 2024, 22:36
1f8c899
Код
Авторство
О чём код?
--TEST-- Closures via getParameters() and getDeclaringFunction() calling reflection_method_factory() with an internal object being set --FILE-- <?php class A {} class B extends A {} $closure = function($op1, $op2 = 0): self { }; $b = new B(); $fn = $closure->bindTo($b, B::class); const CLOSURE_NAME = '{closure:' . __FILE__ . ':6}'; $rClosure = new ReflectionFunction($fn); var_dump($rClosure->name == CLOSURE_NAME); $params = $rClosure->getParameters(); unset ($rClosure); $closureFromParam = $params[0]->getDeclaringFunction(); var_dump($closureFromParam::class); var_dump($closureFromParam->name == CLOSURE_NAME); $rClass = new ReflectionClass($b); $rMethods = $rClass->getMethods(); var_dump($rMethods); try { $rMethod = new ReflectionMethod($b, CLOSURE_NAME); var_dump($rMethod); } catch (\Throwable $e) { echo $e::class, ': ', $e->getMessage(), PHP_EOL; } ?> --EXPECTF-- bool(true) string(16) "ReflectionMethod" bool(true) array(0) { } ReflectionException: Method B::{closure:%s:6}() does not exist