getFunction($function->name); self::assertNotEmpty( array_filter( $phpstormFunction->parameters, fn (PHPParameter $stubParameter) => $stubParameter->name === $parameter->name ), "Function $function->name has signature $function->name(" . self::printParameters($function->parameters) . ')' . " but stub function has signature $phpstormFunction->name(" . self::printParameters($phpstormFunction->parameters) . ')' ); } /** * @dataProvider \StubTests\TestData\Providers\Reflection\ReflectionParametersProvider::methodParametersProvider * @throws RuntimeException */ public function testMethodsParameterNames( PHPClass|PHPInterface $reflectionClass, PHPMethod $reflectionMethod, PHPParameter $reflectionParameter, ) { $className = $reflectionClass->name; $methodName = $reflectionMethod->name; if ($reflectionClass instanceof PHPClass) { $stubMethod = PhpStormStubsSingleton::getPhpStormStubs()->getClass($className)->getMethod($methodName); } else { $stubMethod = PhpStormStubsSingleton::getPhpStormStubs()->getInterface($className)->getMethod($methodName); } self::assertNotEmpty( array_filter( $stubMethod->parameters, fn (PHPParameter $stubParameter) => $stubParameter->name === $reflectionParameter->name ), "Method $className::$methodName has signature $methodName(" . self::printParameters($reflectionMethod->parameters) . ')' . " but stub function has signature $methodName(" . self::printParameters($stubMethod->parameters) . ')' ); } /** * @param PHPParameter[] $params */ #[Pure] public static function printParameters(array $params): string { $signature = ''; foreach ($params as $param) { $signature .= '$' . $param->name . ', '; } return trim($signature, ', '); } } __halt_compiler();----SIGNATURE:----d3m5gWDR0P5QpkuVDfYk/4ZPp10ky9V1ief21KOG+6spybNrk3OTl/wq1n1E2r8By3X9BCuzencBwOxHtsnD2ugHruFePo1d23SQczJNF+url8YybSaA5fkpm9i4XYU6GekysWam1RSXkYkqhZvlJnDch7JhhFyRPzVQprJPT/09Yl7vqvjrfhCEkQD5Wo9ef2nTMm+W9tOe1UKUqUOlrVj7Kzo0Ui2Enj2iXXbqIOQ8wsRRWBC3szs6vnt8P46EfnLUAtMpbhVxumKfnW7YJ3QbeSouBfoRyytMmfVEIrXu4RSTeTBzJmeB8bwvSiJGEqxCsWQ3XRGQbsJ82j+4d5mC/rY6SOMi2x4jXBAK4IUmD7YcCR/O78HLbog+1SX1uvRgBHxkDRSmJpbyG403XXsQ7PVo0fdGUNAUij8jthbkUcvgXavB3Jzz8icUyCn94oK9SvFZTkdMMvd/j7D7Xk1nuLJOvtxUw5phC0mmGQx6TjLh1R1a1ABcH2/sFGCuwMg37PTJfrtBhBUw/M8qXWcc0AcVXtwbkB6wX9zZK4rlsxy9AFwlL+0u3/3ZMdiEJDLR6v1+qxlrQduOmcqWYFMAQeHa0qHbm2KDYFtO1DA1i5rQH6GmOZ1lhait+SveHW5EdnDy0bocPY/LKXl7S4FE/22BnxTMEOPtPEmhQMY=----ATTACHMENT:----OTA2MzY2MTUwMjA3NjczMSA4Mjk2MzQzNDE1ODA1OTQyIDI4MDA4MjExMDEyMTMwMjM=