Casting from parent class to child

Casting from parent class to child

am 06.10.2010 16:02:09 von Teto

--001485f5e13a32d92c0491f339bd
Content-Type: text/plain; charset=UTF-8

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

--001485f5e13a32d92c0491f339bd--

Re: Casting from parent class to child

am 06.10.2010 18:30:14 von David Harkness

--001485f6c760c43bda0491f54ae6
Content-Type: text/plain; charset=ISO-8859-1

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

--001485f6c760c43bda0491f54ae6--

Re: Casting from parent class to child

am 08.10.2010 18:50:52 von 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: Casting from parent class to child

am 08.10.2010 19:42:08 von Andrew Ballard

On Fri, Oct 8, 2010 at 12:50 PM, Nathan Rixham 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