Josh Watzman wrote:

> 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.

FWIW, there is a third option: instead of returning null, return a null
object[1].  That causes (slightly) more overhead, but it's quite
flexible and works rather nicely without requiring the (IMO) ugly ?->
nor exception handling.

Consider a non-existent user "foo":

  User::find('foo')?->getName() // returns null

  User::find('foo')->getName() // could also return '' or 'Unknown user'

[1] <http://en.wikipedia.org/wiki/Null_Object_pattern>

-- 
Christoph M. Becker

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to