[ Mini Kiebo ]
Server: Windows NT AKFAR_SERVER 10.0 build 26200 (Windows 10) AMD64
Path:
D:
/
kmspico
/
bin
/
lib
/
[
Home
]
File: closures_bound_getDeclaringFunction.phpt
--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