You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
<?php /** * @copyright NetMonsters <team@netmonsters.ru> * @link http://netmonsters.ru * @package Majestic * @subpackage db * @since 2011-11-15 */
class MongoCommandBuilder {
const FIND = 'Find';
const INSERT = 'Insert';
const UPDATE = 'Update';
const REMOVE = 'Remove';
static public function factory($type) { $class = ucfirst($type) . 'MongoCommand'; return new $class(); } }
abstract class MongoDbCommand { public function execute() { if ($this->checkParams()) { return $this->concreteExecute(); } else { throw new Exception(get_called_class() . ' error. Bind all required params first.'); } }
public function bindParam($name, $value) { $this->$name = $value; return $this; }
abstract protected function concreteExecute();
abstract protected function checkParams(); }
class FindMongoCommand extends MongoDbCommand { protected function concreteExecute() { return $this->collection->find($this->condition, $this->fields); }
protected function checkParams() { if (isset($this->collection) && isset($this->condition) && isset($this->fields)) { return true; } else { return false; } } }
class InsertMongoCommand extends MongoDbCommand { protected function concreteExecute() { return $this->collection->insert($this->data, array('safe' => $this->safe)); }
protected function checkParams() { if (isset($this->collection) && isset($this->data) && isset($this->safe)) { return true; } else { return false; } } }
class UpdateMongoCommand extends MongoDbCommand { protected function concreteExecute() { return $this->collection->update($this->condition, $this->data, array('upsert' => $this->upsert, 'safe' => $this->safe)); }
protected function checkParams() { if (isset($this->collection) && isset($this->condition) && isset($this->data) && isset($this->upsert) && isset($this->safe) ) { return true; } else { return false; } } }
class RemoveMongoCommand extends MongoDbCommand { protected function concreteExecute() { return $this->collection->remove($this->condition, array('safe' => $this->safe)); }
protected function checkParams() { if (isset($this->collection) && isset($this->condition) && isset($this->safe)) { return true; } else { return false; } } }
|