rfc:returntypehint

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
rfc:returntypehint [2010/07/28 19:38] – change the title feliperfc:returntypehint [2010/07/29 00:44] – - Update example felipe
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->getReturnType());   // "Test" 
-var_dump($func->returnsObject()); // true +var_dump($func->returnsObject());   // true 
-var_dump($func->returnsClass());  // "Test"+var_dump($func->getReturnClass());  // "Test"
 </code> </code>
  
Line 88: Line 132:
 $func = new ReflectionFunction('abc'); $func = new ReflectionFunction('abc');
 var_dump($func->getReturnType()); // scalar var_dump($func->getReturnType()); // scalar
 +var_dump($func->returnsScalar()); // true
 </code> </code>
  
Line 93: Line 138:
 ===== 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.txt · Last modified: 2017/09/22 13:28 by 127.0.0.1