rfc:reflectionparameter.typehint

This is an old revision of the document!


PHP RFC: Add typehint accessors to ReflectionParameter

Introduction

This RFC proposes some improvements to the way we handle type information in reflection. This work will make it easier for writing tools that render type information from reflection. If the Return Type RFC is accepted this RFC also unifies the reflection API for type information for both parameters and return types.

Proposal

This RFC proposes a new class ReflectionTypeAnnotation to represent type information. This RFC adds methods to ReflectionParameter to use this new class: ReflectionParameter::hasTypeAnnotation() and ReflectionParameter::getTypeAnnotation(). If the Return Type RFC is accepted it will then it will also use this new ReflectionTypeAnnotation class.

The class ReflectionTypeAnnotation also has __toString method to make parsing function/method signatures and replicating them for mocking frameworks simpler; current mocking frameworks have to cast the ReflectionParameter to a string, then text parse that string to retrieve the information.

Proposed PHP Version(s)

5.next (5.7)

New Reflection class type: ReflectionTypeAnnotation

class ReflectionTypeAnnotation implements Reflector {
    public function __toString() { /* returns type annotation string (e.g. "array", "stdClass", etc...) */ }
    public function isArray() { /* true if the typehint is "array" */ }
    public function isCallable() { /* true if the typehint is "callable" */ }
    public function isNullable() { /* true if NULL is an acceptable value */ }
}

Implementation and new unit test

rfc/reflectionparameter.typehint.1401468015.txt.gz · Last modified: 2017/09/22 13:28 (external edit)