Re: [PHP] Casting from parent class to child

2010-10-08 Thread Nathan Rixham

David Harkness wrote:

Casting does not change an object. You must copy the relevant value(s) from
the object returned into a new DateTimePlus. Since DateTime's constructor
takes only a string, and I assume it won't accept your format directly,


unless you implement __toString I believe (not tested)


you're better off converting the string into a Unix timestamp and creating a
new object from that. However, I leave that optimization to you. The
following code is sufficient:

$plus = new DateTimePlus();
$plus.setTimestamp(parent::createFromFormat(H.i d.m.Y,
$string).getTimestamp());
return $plus;

David




--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Casting from parent class to child

2010-10-08 Thread Andrew Ballard
On Fri, Oct 8, 2010 at 12:50 PM, Nathan Rixham nrix...@gmail.com wrote:
 David Harkness wrote:

 Casting does not change an object. You must copy the relevant value(s)
 from
 the object returned into a new DateTimePlus. Since DateTime's constructor
 takes only a string, and I assume it won't accept your format directly,

 unless you implement __toString I believe (not tested)


IMO, that would be a truly useful feature to add if you were extending
DateTime anyway.

Andrew

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Casting from parent class to child

2010-10-06 Thread David Harkness
Casting does not change an object. You must copy the relevant value(s) from
the object returned into a new DateTimePlus. Since DateTime's constructor
takes only a string, and I assume it won't accept your format directly,
you're better off converting the string into a Unix timestamp and creating a
new object from that. However, I leave that optimization to you. The
following code is sufficient:

$plus = new DateTimePlus();
$plus.setTimestamp(parent::createFromFormat(H.i d.m.Y,
$string).getTimestamp());
return $plus;

David