. */ #namespace Doctrine::Common; #use Doctrine::Common::NullObject; /** * The Configuration is the container for all configuration options of Doctrine. * It combines all configuration options from DBAL & ORM. * * INTERNAL: When adding a new configuration option just write a getter/setter * combination and add the option to the _attributes array with a proper default value. * * @author Roman Borschel * @since 2.0 */ class Doctrine_Configuration { private $_nullObject; /** * The attributes that are contained in the configuration. * Values are default values. PHP null is replaced by a reference to the Null * object on instantiation in order to use isset() instead of array_key_exists(). * * @var array */ private $_attributes = array( 'quoteIdentifiers' => false, 'indexNameFormat' => '%s_idx', 'sequenceNameFormat' => '%s_seq', 'tableNameFormat' => '%s', 'resultCacheImpl' => null, 'queryCacheImpl' => null, 'metadataCacheImpl' => null, ); /** * Creates a new configuration that can be used for Doctrine. */ public function __construct() { $this->_nullObject = Doctrine_Null::$INSTANCE; $this->_initAttributes(); } /** * Initializes the attributes. * Changes null default values to references to the Null object to allow * fast isset() checks instead of array_key_exists(). * * @return void */ private function _initAttributes() { foreach ($this->_attributes as $key => $value) { if ($value === null) { $this->_attributes[$key] = $this->_nullObject; } } } /** * Checks whether the configuration contains/supports an attribute. * * @param string $name * @return boolean */ public function has($name) { return isset($this->_attributes[$name]); } public function getQuoteIdentifiers() { return $this->_attributes['quoteIdentifiers']; } public function setQuoteIdentifiers($bool) { $this->_attributes['quoteIdentifiers'] = (bool)$bool; } public function getIndexNameFormat() { return $this->_attributes['indexNameFormat']; } public function setIndexNameFormat($format) { //TODO: check format? $this->_attributes['indexNameFormat'] = $format; } public function getSequenceNameFormat() { return $this->_attributes['sequenceNameFormat']; } public function setSequenceNameFormat($format) { //TODO: check format? $this->_attributes['sequenceNameFormat'] = $format; } public function getTableNameFormat() { return $this->_attributes['tableNameFormat']; } public function setTableNameFormat($format) { //TODO: check format? $this->_attributes['tableNameFormat'] = $format; } public function getResultCacheImpl() { return $this->_attributes['resultCacheImpl']; } public function setResultCacheImpl(Doctrine_Cache_Interface $cacheImpl) { $this->_attributes['resultCacheImpl'] = $cacheImpl; } public function getQueryCacheImpl() { return $this->_attributes['queryCacheImpl']; } public function setQueryCacheImpl(Doctrine_Cache_Interface $cacheImpl) { $this->_attributes['queryCacheImpl'] = $cacheImpl; } public function getMetadataCacheImpl() { return $this->_attributes['metadataCacheImpl']; } public function setMetadataCacheImpl(Doctrine_Cache_Interface $cacheImpl) { $this->_attributes['metadataCacheImpl'] = $cacheImpl; } public function setCustomTypes(array $types) { foreach ($types as $name => $typeClassName) { Doctrine_DataType::addCustomType($name, $typeClassName); } } public function setTypeOverrides(array $overrides) { foreach ($override as $name => $typeClassName) { Doctrine_DataType::overrideType($name, $typeClassName); } } }