我有一个类,它只MongoDate
用一个构造函数和一个重载的__toString()
.
class MyClass extends MongoDate
{
public function __construct( $param )
{
if( is_a( $param, 'MongoDate' ) )
{
parent::__construct( $param->sec, $param->usec );
}
else if ( is_a( $param, 'DateTime' ))
{
parent::__construct( $param->getTimestamp() );
}
else if( is_string( $param ) )
{
$datetime = new DateTime( $param );
parent::__construct( $datetime->getTimestamp() );
}
else
{
parent::__construct();
}
}
public function __toString()
{
return date( 'D, d M Y H:i', $this->sec );
}
}
此类的实例构造良好,并且在存储之前具有正确的值。
此类存储在 MongoDB 中时具有以下形式:
{ "sec" : 1387576800, "usec" : 0 }
而不是我在使用 MongoDate 存储值时拥有的这个:
ISODate("2013-12-30T22:00:00Z")
存储值的代码,在两种情况下都使用,其中$date
是 aMyClass
或 a MongoDate
:
$query = array( '_id' => $item_id );
$update = array( '$set' => array( $date_field => $date ) );
$collection->update( $query, $update );
为什么从 MongoDate 继承的类没有存储为 MongoDate 是(作为 ISODate 对象),我该如何解决?