PHP RFC: ReflectionParameter::getClassName()


Adds a new method to ReflectionParameter to allow easy access to a class name in a type hint, avoiding the need to actually load the class and use `getClass()→name`.


This method lets you access the class name of a type hint as a string:

use Bar\Baz;
class Foo {
  public function bar(Qux $qux, $bar, Baz $baz, \Bar\Quz $quz) {}
  public function waldo(array $wibble, callable $wobble) {}
$class = new ReflectionClass(Foo::class);
$method = $class->getMethod("bar");
$params = $method->getParameters();
var_dump($params[0]->getClassName()); // string(3) "Qux"
var_dump($params[1]->getClassName()); // NULL
var_dump($params[2]->getClassName()); // string(7) "Bar\Baz"
var_dump($params[3]->getClassName()); // string(7) "Bar\Quz"
$method = $class->getMethod("waldo");
$params = $method->getParameters();
var_dump($params[0]->getClassName()); // NULL
var_dump($params[1]->getClassName()); // NULL

This is only targeted at classes, not any other typehint. If scalar type hints come then I'm sure they'll have some new reflection methods. This is just getClass()→name but without the need to load the class.

Backward Incompatible Changes

None, unless somebody has made their own reflection extension and already have a getClassName() method.

Proposed PHP Version(s)


Open Issues

None so far

Patches and Tests

rfc/reflectionparameter-getclassname.txt · Last modified: 2017/09/22 13:28 (external edit)