public function pack() { $eList = ''; if (self::T_ROOT != $this->type) { $prefix = ""; if (self::T_ARRAY == $this->type) { $prefix = ""; } $eList = pack('aa*x', $prefix, $this->name); } foreach ($this->children as $key => $val) { if (is_scalar($val)) { $element = new BSONScalar($val, $key); $eList .= $element->pack(); } else { $element = new BSONDocument($val, $key); $packed = $element->pack(); $eList .= pack("a*xa*", $key, $packed); } } $len = 4 + strlen($eList); $eList = pack("la*", $len, $eList); return $eList; }
public function encode($data) { $document = new BSONDocument($data); return $document->pack(); }