コード例 #1
0
ファイル: ObjectUri.php プロジェクト: crapougnax/t41
 /**
  * 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');
                 }
             }
         }
     }
 }
コード例 #2
0
ファイル: Collection.php プロジェクト: crapougnax/t41
 /**
  * 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);
 }
コード例 #3
0
ファイル: ObjectModel.php プロジェクト: crapougnax/t41
 /**
  * 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();
     }
 }