On Sun, May 6, 2012 at 11:47 AM, Laruence <[email protected]> wrote:
> On Sun, May 6, 2012 at 8:40 AM, Devis Lucato <[email protected]> wrote:
>> 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.
Hi:
after a deep look, I think it's not a bug.
the exception in the catch block is only a local var of that block.
I think you should change you codes like following to accomplish
your requirement:
function foo(&$exception)
{
try {
throw new Exception('foo error');
} catch (Exception $e) {
var_dump(gettype($e));
$exception = $e;
echo $e->getMessage() . "\n";
}
}
foo($error);
var_dump(gettype($error));
thanks
> Hi,
>
> could you file a bug at bugs.php.net? :)
>
> thanks
>> 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!
>
>
>
> --
> Laruence Xinchen Hui
> http://www.laruence.com/
--
Laruence Xinchen Hui
http://www.laruence.com/
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php