Re: [PHP] Casting from parent class to child
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
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
[PHP] Casting from parent class to child
Hi, I'm trying to extends the base class DateTime. parent::createFromFormat(H.i d.m.Y, $string); returns a DateTime and I want to convert it into a DateTimePlus (my own extended class). What's the best way to do this plz ? Some code: class DateTimePlus extends DateTime { static function setFromGUIDateAndTime($date,$time ){ $string = $time.' '.$date; //echo 'str:'.$string; $res = parent::createFromFormat(H.i d.m.Y, $string); return (DateTimePlus)parent::createFromFormat(H.i d.m.Y, $string); } Thk you matt
Re: [PHP] Casting from parent class to child
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