Zend_Db_Table_Abstract::_setupMetadata PHP Method

_setupMetadata() protected method

If metadata cannot be loaded from cache, adapter's describeTable() method is called to discover metadata information. Returns true if and only if the metadata are loaded from cache.
protected _setupMetadata ( ) : boolean
return boolean
    protected function _setupMetadata()
    {
        if ($this->metadataCacheInClass() && count($this->_metadata) > 0) {
            return true;
        }
        // Assume that metadata will be loaded from cache
        $isMetadataFromCache = true;
        // If $this has no metadata cache but the class has a default metadata cache
        if (null === $this->_metadataCache && null !== self::$_defaultMetadataCache) {
            // Make $this use the default metadata cache of the class
            $this->_setMetadataCache(self::$_defaultMetadataCache);
        }
        // If $this has a metadata cache
        if (null !== $this->_metadataCache) {
            // Define the cache identifier where the metadata are saved
            //get db configuration
            $dbConfig = $this->_db->getConfig();
            $port = isset($dbConfig['options']['port']) ? ':' . $dbConfig['options']['port'] : (isset($dbConfig['port']) ? ':' . $dbConfig['port'] : null);
            $host = isset($dbConfig['options']['host']) ? ':' . $dbConfig['options']['host'] : (isset($dbConfig['host']) ? ':' . $dbConfig['host'] : null);
            // Define the cache identifier where the metadata are saved
            $cacheId = md5($port . $host . '/' . $dbConfig['dbname'] . ':' . $this->_schema . '.' . $this->_name);
        }
        // If $this has no metadata cache or metadata cache misses
        if (null === $this->_metadataCache || !($metadata = $this->_metadataCache->load($cacheId))) {
            // Metadata are not loaded from cache
            $isMetadataFromCache = false;
            // Fetch metadata from the adapter's describeTable() method
            $metadata = $this->_db->describeTable($this->_name, $this->_schema);
            // If $this has a metadata cache, then cache the metadata
            if (null !== $this->_metadataCache && !$this->_metadataCache->save($metadata, $cacheId)) {
                trigger_error('Failed saving metadata to metadataCache', E_USER_NOTICE);
            }
        }
        // Assign the metadata to $this
        $this->_metadata = $metadata;
        // Return whether the metadata were loaded from cache
        return $isMetadataFromCache;
    }

Usage Example

Exemplo n.º 1
0
 protected function _setupMetadata()
 {
     //hier drinnen damits nur gemacht wird sobald di erste Table erstellt wird
     if (!self::getDefaultMetadataCache()) {
         $frontendOptions = array('automatic_serialization' => true, 'write_control' => false);
         if (extension_loaded('apc') && PHP_SAPI != 'cli') {
             $backendOptions = array();
             $backend = 'Apc';
         } else {
             $backendOptions = array('cache_dir' => 'cache/model', 'file_name_prefix' => 'dbtable');
             $backend = 'File';
         }
         $cache = Kwf_Cache::factory('Core', $backend, $frontendOptions, $backendOptions);
         self::setDefaultMetadataCache($cache);
     }
     parent::_setupMetadata();
 }