On 27.05.2016 at 10:27, Rowan Collins wrote:

> On 26/05/2016 23:03, Lester Caine wrote:
>> On 26/05/16 22:38, Rowan Collins wrote:
>>>>> // accessing $me->marriage or $me->death returns NULL (because they
>>>>>> allow nulls) but raises E_NOTICE
>>>> BUT DateTime currently will not store 'null' - it returns 'now'
>>>> instead.
>>>> We end up having to store string or integer values because we can't
>>>> store a null date :(
>>>
>>> That's exactly what ?DateTime is for - "either DateTime or Null", just
>>> like in a database.
>>>
>>> In most type systems, there is no such thing as "a null date" - if it's
>>> null, it's not a date, it's a null value.
>>
>> The exact question here then is in relation to just how one uses
>> 'DateTime' in this situation? Or more accurately how one maintains the
>> 'or Null' state when the type does not allow null itself?
> 
> I don't understand the question.
> 
> class Foo { ?DateTime $d }
> $f = new Foo;
> $f->d = null;
> $f->d = new DateTime;
> 
> It's either a DateTime, or it's null.

ACK.  However, an alternative might be:

  class NullDateTime extends DateTime {...}
  class Foo { DateTime $d }
  $f = new Foo;
  $f->d = new NullDateTime;
  $f->d = new DateTime;

-- 
Christoph M. Becker

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

Reply via email to