On Sat, Dec 24, 2011 at 8:40 AM, Will Fitch <will.fi...@gmail.com> wrote:
> In the interest of providing options for an ability to mark a method as > returning null, I have added a new patch here: > http://www.willfitch.com/php/nullable.patch > > This includes a new token "T_NULLABLE". Here are a few examples: > > // This is allowed > private nullable ArrayIterator getIterator() > { > return null; > } > > // This throws an E_RECOVERABLE_ERROR > private ArrayIterator getIterator() > { > return null; > } > > The token/identifier can certainly change, but I want to provide the most > options for the best solution. > This looks fine to me, looks more php like then the C# examples. > > > On Dec 23, 2011, at 6:31 PM, André Rømcke wrote: > > 2011/12/23 John Crenshaw <johncrens...@priacta.com> > >> > From: Will Fitch [mailto:will.fi...@gmail.com] >> > >> > I would like to take this opportunity to query on a consensus: >> > >> > Would you prefer to allow methods with type hinted return values to >> return null at will, or add a marker noting that it *may* return null? >> > >> > Example: Return null at will >> > >> > public ArrayIterator getIterator() >> > { >> > // something happened, will return null >> > return null; >> > } >> > >> > Example: Return only if identified as such >> > >> > public ArrayIterator? getIterator() >> > { >> > return null; >> > } >> >> I hate the syntax in the second example (using ?). >> > > > It looks strange, but easy to get used to. Two examples from C#: > > public decimal? Grade { get; set; } > > public Nullable<System.DateTime> Time { get; set; } > > > > >> >> IMO allowing null should be the default unless specifically disallowed. > > > I disagree for the reasons mentioned by for instance Robert. > Type hints should be strict/explicit or not done at all. > > > For the record; This was not ment as an argument against scalar, and similar type hints ( object, callable.. ) . It was an argument against hinting about something and getting something completely different (null). Happy xmas!