/** * Instanciate an object uri from a string * (ex: '1', '/1', '@backend/1', '/table/1', '@backend/table/1', 'mysql://*****:*****@host:port/database/table/1') * * @param string $str * @param t41\Backend\BackendUri $backendUri */ public function __construct($str = null, Backend\BackendUri $backendUri = null) { if (!is_null($str)) { $this->setUrl($str); $parts = explode('/', $str); // we only got one identifier, use default backend or passed one if (count($parts) == 1) { $this->_backendUri = $backendUri ? $backendUri->getUri() : Backend::getDefaultBackend()->getUri(); $this->_identifier = $str; } else { if (substr($parts[0], 0, 1) == Backend::PREFIX) { $this->_backendUri = $backendUri ? $backendUri : Backend::getBackendUri($parts[0]); $this->_identifier = $parts[count($parts) - 1]; unset($parts[count($parts) - 1]); unset($parts[array_search($this->_backendUri->getDbName(), $parts)]); unset($parts[array_search($this->_backendUri->getAlias(), $parts)]); $this->_url = implode('/', $parts); } else { if ($backendUri) { $this->_backendUri = $backendUri ? $backendUri : Backend::getBackendUri($parts[0]); $this->_url = $str; } else { // uri contains a backend reference which is not an alias // @todo implement tests throw new Exception('litteral backend definition not yet implemented'); } } } } }
/** * Get total quantity of potential members meeting condition(s) * @param Backend\Adapter\AbstractAdapter $backend */ protected function _count(Backend\Adapter\AbstractAdapter $backend = null) { if (is_null($backend)) { $backend = ObjectModel::getObjectBackend($this->_do->getClass()); } if (is_null($backend)) { $backend = Backend::getDefaultBackend(); } $this->_max = (int) Backend::find($this, $backend, true); }
/** * Tests if a definition exists for given $id * Returns a t41\Backend\Adapter\AbstractAdapter instance if object definition includes a default backend value * * @param string $id * @return t41\Backend\Adapter\AbstractAdapter * @throws ObjectModel\Exception */ public static function getObjectBackend($id) { if (!self::definitionExists($id)) { throw new ObjectModel\Exception(array('NO_CLASS_DECLARATION', $id)); } if (isset(self::$_config[$id]['backend'])) { return Backend::getInstance(Backend::PREFIX . self::$_config[$id]['backend']); } else { return Backend::getDefaultBackend(); } }