rfc:returntypehint

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
rfc:returntypehint [2010/07/28 19:56]
felipe Fix method name
rfc:returntypehint [2017/09/22 13:28] (current)
Line 33: Line 33:
 PHP Catchable fatal error: ​ The returned value must be of the type scalar, PHP Catchable fatal error: ​ The returned value must be of the type scalar,
 called in ... on line 9 and returning in ... on line 4 called in ... on line 9 and returning in ... on line 4
 +*/
 +</​code>​
 +
 +=== Using an user class type ===
 +
 +<code php>
 +<?php
 +
 +class Bar { }
 +
 +class Foo extends Bar {
 + public function Bar test($x) {
 + return $x;
 + }
 +}
 +
 +$foo = new Foo;
 +$foo->​test($foo); ​        // ok
 +$foo->​test(new stdClass); // fail
 +/*
 +PHP Catchable fatal error: ​ The returned value should be instance of Bar,
 +called in ... on line 13 and returning in ... on line 7
 */ */
 </​code>​ </​code>​
Line 50: Line 72:
 } }
 // PHP Fatal error: ​ Declaration of Foo::bar() must be compatible with that of ITest::​bar() in ... on line 7 // PHP Fatal error: ​ Declaration of Foo::bar() must be compatible with that of ITest::​bar() in ... on line 7
 +</​code>​
 +
 +=== Using a namespaced class ===
 +
 +<code php>
 +<?php
 +
 +namespace foo {
 +class foo { }
 +class bar extends foo { }
 +}
 +
 +namespace bar {
 +class bar {
 + public function \foo\foo test() {
 + return new \foo\bar;
 + }
 +}
 +
 +$bar = new bar;
 +$bar->​test();​ // ok
 +}
 </​code>​ </​code>​
  
Line 72: Line 116:
  
 $func = new ReflectionMethod('​foo::​test'​);​ $func = new ReflectionMethod('​foo::​test'​);​
-var_dump($func->​getReturnType()); // "​Test"​ +var_dump($func->​getReturnTypeHint());   ​// "​Test"​ 
-var_dump($func->​returnsObject());​ // true +var_dump($func->​returnsObject()); ​      ​// true
-var_dump($func->​getReturnClass()); ​ // "​Test"​+
 </​code>​ </​code>​
  
Line 87: Line 130:
  
 $func = new ReflectionFunction('​abc'​);​ $func = new ReflectionFunction('​abc'​);​
-var_dump($func->​getReturnType()); // scalar+var_dump($func->​getReturnTypeHint()); // scalar 
 +var_dump($func->​returnsScalar()); ​    // true
 </​code>​ </​code>​
  
 +=== Using "​self"​ as type ===
 +
 +<code php>
 +<?php
 +
 +class foo {
 + function self bar() {
 + return new foo;
 + }
 +}
 +
 +$func = new ReflectionMethod('​foo::​bar'​);​
 +var_dump($func->​getReturnTypeHint());​ // foo
 +var_dump($func->​returnsObject()); ​    // true
 +</​code>​
  
 ===== Patch ===== ===== Patch =====
  
-Comming soon+  * Engine + Reflection: http://​felipe.ath.cx/​diff/​returntypehint.diff 
 +  * Tests: http://​felipe.ath.cx/​diff/​tests/​return_typehint_tests.zip
rfc/returntypehint.1280346989.txt.gz · Last modified: 2017/09/22 13:28 (external edit)