rfc:returntypehint
This is an old revision of the document!
Request for Comments: Return type-hint
- Version: 1.0
- Date: 2010-07-28
- Author: Felipe Pena felipe@php.net
- Status: Under Discussion
- First Published at: http://wiki.php.net/rfc/typehint
Introduction
The purpose of the RFC is to discuss about the return type hint utility on PHP.
Differences from the old proposal
- The old proposal (return and param type-hint) was introducing some keywords (the type names), with this new proposal there is no such BC.
- The new proposal has a better error message, identifying where the function/method was called.
- Added generic “numeric”, “scalar” types
- No needed strange syntax to solve parser conflicts
Examples
Using "scalar" type-hint
<?php function scalar abc($x = NULL) { return $x; } var_dump(abc(1)); // int(1) var_dump(abc(1.)); // float(1) var_dump(abc()); /* PHP Catchable fatal error: The returned value must be of the type scalar, called in ... on line 9 and returning in ... on line 4 */
Interface defining the return type-hint
<?php interface ITest { function string bar(); } class Foo implements ITest { public function int bar() { } } // PHP Fatal error: Declaration of Foo::bar() must be compatible with that of ITest::bar() in ... on line 7
Reflection
- See below some information that will be possible to be get using Reflection.
Using a class type
<?php interface Test { } class foo implements Test { function Test test() { return new foo; } } $func = new ReflectionMethod('foo::test'); var_dump($func->getReturnType()); // "Test" var_dump($func->returnsObject()); // true var_dump($func->getReturnClass()); // "Test"
PHP native types
<?php function scalar abc($x = NULL) { return $x; } $func = new ReflectionFunction('abc'); var_dump($func->getReturnType()); // scalar
Patch
Comming soon
rfc/returntypehint.1280346989.txt.gz · Last modified: 2017/09/22 13:28 (external edit)