public function toString($field) { $item = $this->{$field} ?? null; if (!array_key_exists($field, $this->_data)) { return null; } elseif (is_null($item)) { return var_export($item, true); } elseif (is_bool($item)) { return var_export($item, true); } elseif (is_string($item)) { return $item; } elseif (is_numeric($item)) { return $item; } elseif (is_array($item)) { return \mongo\format\JSON::encode($item); } elseif ($item instanceof \mongo\type\Timestamp) { return $item->__toString(); } elseif ($item instanceof \mongo\type\DateTime) { return $item->__toString(); } elseif ($item instanceof \MongoDB\BSON\ObjectId) { return $item->__toString(); } elseif ($item instanceof \MongoDB\BSON\Binary) { return pretty_size(strlen($item->getData())); } elseif ($item instanceof \MongoDB\BSON\Javascript) { return \mongo\type\Javascript::bsonExport($item); } elseif ($item instanceof \MongoDB\BSON\Regex) { return \mongo\type\Regex::bsonExport($item); } elseif ($item instanceof \MongoDB\BSON\MaxKey) { return '$MaxKey'; } elseif ($item instanceof \MongoDB\BSON\MinKey) { return '$MinKey'; } else { return \mongo\format\JSON::encode($item); } }
public static function bsonUnserialize($item) { if ($item instanceof \mongo\type\DateTime) { return ['tag' => 'DateTime', 'data' => $item->__toString()]; } elseif ($item instanceof \mongo\type\Timestamp) { return ['tag' => 'Timestamp', 'data' => $item->__toString()]; } elseif ($item instanceof \MongoDB\BSON\ObjectID) { return ['tag' => 'ObjectID', 'data' => $item->__toString()]; } elseif ($item instanceof \MongoDB\BSON\Binary) { return ['tag' => 'Binary', 'data' => \mongo\type\Binary::bsonExport($item)]; } elseif ($item instanceof \MongoDB\BSON\Javascript) { return ['tag' => 'Javascript', 'data' => \mongo\type\Javascript::bsonExport($item)]; } elseif ($item instanceof \MongoDB\BSON\Regex) { return ['tag' => 'Regex', 'data' => \mongo\type\Regex::bsonExport($item)]; } elseif ($item instanceof \MongoDB\BSON\MaxKey) { return ['tag' => 'MaxKey', 'data' => '$MaxKey']; } elseif ($item instanceof \MongoDB\BSON\MinKey) { return ['tag' => 'MinKey', 'data' => '$MinKey']; } }