Hi php internals,

After some long and deep research i finally decided to write my first RFC
about a feature i'd be interested to be improved in the php core: *Nested
enclosing returns*


The main purpose, as the title say, is to have the possibility to nest
multiple return like we can do currently with break/continue.

I thinks it'll being better with a scheme:




function foo($foo = true)
{
   if(!$foo)
   {
      return false, 3;// Please note the second return argument is the
return nesting level
   }
   else
   {
      return true;// Default nested return argument is always equal to
1 (if not specified, current)
   }
}

function bar($foo = true)
{
   foo($foo);
   // Some stuff that will never be executed if $foo == false and
nested return argument = 2
   echo 'Hi jon !';
}

function baz($foo = true)
{
   echo 'Hi bertie !';
   foo($foo);
   // Some stuff that will never be executed if $foo == false and
nested return argument = 3
   echo 'Hi freddy !';
}


baz(true);  // Display:
         //  Hi bertie !
         //  Hi jon !
         //  Hi freddy !

baz(false);  // Display:
         //  Hi bertie !


Benefits:
-Wont break compatibility
-May improve code interpretation speed due to part of code skipped by the
nested return.
-Allow "dynamic" return expressions.

Inconveniences:
-May complicate debug/backtrace


Regards,
Georges.L

Reply via email to