Hi,

I stumbled upon this code while working with a variable passed by
reference, I was wondering if someone could provide some feedback before
raising a ticket, just in case PHP (5.3.6) is doing what it's supposed to
do.
In the code below I would expect "catch" to change the variable as
an assignment would do, but that doesn't happen.

 function foo(&$exception)
> {
>     try {
>         throw new Exception('foo error');
>     } catch (Exception $exception) {
>         var_dump(gettype($exception));
>         echo $exception->getMessage() . "\n";
>     }
> }
> foo($error);
> var_dump(gettype($error));



Expected:

> string(6) "object"
> foo error
> string(6) "object"


Current result:

> string(6) "object"
> foo error
> string(4) "NULL"



It looks like "catch" is creating a completely new variable in the scope,
also removing the existing one from it.
I appreciate this is an edge case, if not a bug is it worth adding it to
http://php.net/manual/en/language.exceptions.php or somewhere under
http://www.php.net/manual/en/language.references.php ?


Thank you!

Reply via email to