> -----Ursprüngliche Nachricht-----
> Von: Andrea Faulds [mailto:[email protected]]
> Gesendet: Mittwoch, 10. Dezember 2014 20:21
> An: Josh Watzman
> Cc: PHP internals
> Betreff: Re: [PHP-DEV] [RFC] Nullsafe calls
>
> Hi again.
>
> > On 10 Dec 2014, at 19:11, Josh Watzman <[email protected]> wrote:
> >
> > On Dec 10, 2014, at 9:19 AM, Andrea Faulds <[email protected]> wrote:
> >
> >> First, how is this substantially different from catching an exception?
> >> With Nikitas Exceptions in the Engine RFC,
> something like this would be possible:
> >>
> >> try {
> >> return $foo->bar()->qux()->elePHPant()->dance();
> >> } catch (EngineException $e) {
> >> return NULL;
> >> }
> >>
> >> That would essentially do the same as what youre proposing:
> >>
> >> return $foo?->bar()?->qux()?->elePHPant()?->dance();
> >>
> >> Are there many instances where thered be a substantial benefit to using
> >> ?-> versus catching an exception?
> >
> > It's an API decision up to the implementors of the object. If you like
> > using exceptions for *every* failure, then go for it, this syntax
> > won't cost you anything or get in your way :)
> >
> > However, for a lot of failures, I don't feel that exceptions are
> > appropriate. I tend to only use them for
exceptional
> behavior -- usually, some failure that needs to be propagated up a few levels
> up the stack, to an appropriate error
> boundary. This doesn't necessarily mean a completely unrecoverable error, but
> it's *locally* unrecoverable. For things
that
> are completely recoverable, returning null might be more appropriate and more
> lightweight, and then this nullsafe
> operator would be useful at that point.
>
>
huh? Im not talking about exceptions the object itself throws. In PHP 7, if
> Nikitas RFC passes, trying to call a
method on
> NULL will throw an exception. That largely negates the need for a special
> operator, since you can just catch the
exception.
>
> Thanks.
> --
> Andrea Faulds
> http://ajf.me/
> > --
> PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit:
> http://www.php.net/unsub.php
I think it is a matter of taste whether you use try/catch as control structure
or only as exception handling. I for
myself usually try to avoid using it as control structure and thus would write
something like:
if($a !== null){
$a->foo(bar());
}
And for this case the ?-> operator seems perfect for me - as long as it does
not evaluate bar().
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php