12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- <?php
- /**
- * Lithium: the most rad php framework
- *
- * @copyright Copyright 2013, Union of RAD (http://union-of-rad.org)
- * @license http://opensource.org/licenses/bsd-license.php The BSD License
- */
- namespace lithium\data\source\mongo_db;
- use MongoId;
- use MongoCode;
- use MongoDate;
- use MongoRegex;
- use MongoBinData;
- class Schema extends \lithium\data\DocumentSchema {
- protected $_handlers = array();
- protected $_types = array(
- 'MongoId' => 'id',
- 'MongoDate' => 'date',
- 'MongoCode' => 'code',
- 'MongoBinData' => 'binary',
- 'datetime' => 'date',
- 'timestamp' => 'date',
- 'int' => 'integer'
- );
- public function __construct(array $config = array()) {
- $defaults = array('fields' => array('_id' => array('type' => 'id')));
- parent::__construct(array_filter($config) + $defaults);
- }
- protected function _init() {
- $this->_autoConfig[] = 'handlers';
- parent::_init();
- $this->_handlers += array(
- 'id' => function($v) {
- return is_string($v) && preg_match('/^[0-9a-f]{24}$/', $v) ? new MongoId($v) : $v;
- },
- 'date' => function($v) {
- $v = is_numeric($v) ? intval($v) : strtotime($v);
- return !$v ? new MongoDate() : new MongoDate($v);
- },
- 'regex' => function($v) { return new MongoRegex($v); },
- 'integer' => function($v) { return (integer) $v; },
- 'float' => function($v) { return (float) $v; },
- 'boolean' => function($v) { return (boolean) $v; },
- 'code' => function($v) { return new MongoCode($v); },
- 'binary' => function($v) { return new MongoBinData($v); }
- );
- }
- }
- ?>
|