123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- <?php
- namespace Doctrine\DBAL;
- use Doctrine\Common\Cache\Cache;
- use Doctrine\DBAL\Logging\SQLLogger;
- use Doctrine\DBAL\Schema\AbstractAsset;
- use Doctrine\Deprecations\Deprecation;
- use function preg_match;
- /**
- * Configuration container for the Doctrine DBAL.
- *
- * Internal note: When adding a new configuration option just write a getter/setter
- * pair and add the option to the _attributes array with a proper default value.
- */
- class Configuration
- {
- /**
- * The attributes that are contained in the configuration.
- * Values are default values.
- *
- * @var mixed[]
- */
- protected $_attributes = [];
- /**
- * Sets the SQL logger to use. Defaults to NULL which means SQL logging is disabled.
- *
- * @return void
- */
- public function setSQLLogger(?SQLLogger $logger = null)
- {
- $this->_attributes['sqlLogger'] = $logger;
- }
- /**
- * Gets the SQL logger that is used.
- *
- * @return SQLLogger|null
- */
- public function getSQLLogger()
- {
- return $this->_attributes['sqlLogger'] ?? null;
- }
- /**
- * Gets the cache driver implementation that is used for query result caching.
- *
- * @return Cache|null
- */
- public function getResultCacheImpl()
- {
- return $this->_attributes['resultCacheImpl'] ?? null;
- }
- /**
- * Sets the cache driver implementation that is used for query result caching.
- *
- * @return void
- */
- public function setResultCacheImpl(Cache $cacheImpl)
- {
- $this->_attributes['resultCacheImpl'] = $cacheImpl;
- }
- /**
- * Sets the filter schema assets expression.
- *
- * Only include tables/sequences matching the filter expression regexp in
- * schema instances generated for the active connection when calling
- * {AbstractSchemaManager#createSchema()}.
- *
- * @deprecated Use Configuration::setSchemaAssetsFilter() instead
- *
- * @param string|null $filterExpression
- *
- * @return void
- */
- public function setFilterSchemaAssetsExpression($filterExpression)
- {
- Deprecation::trigger(
- 'doctrine/dbal',
- 'https://github.com/doctrine/dbal/pull/3316',
- 'Configuration::setFilterSchemaAssetsExpression() is deprecated, use setSchemaAssetsFilter() instead.'
- );
- $this->_attributes['filterSchemaAssetsExpression'] = $filterExpression;
- if ($filterExpression) {
- $this->_attributes['filterSchemaAssetsExpressionCallable']
- = $this->buildSchemaAssetsFilterFromExpression($filterExpression);
- } else {
- $this->_attributes['filterSchemaAssetsExpressionCallable'] = null;
- }
- }
- /**
- * Returns filter schema assets expression.
- *
- * @deprecated Use Configuration::getSchemaAssetsFilter() instead
- *
- * @return string|null
- */
- public function getFilterSchemaAssetsExpression()
- {
- Deprecation::trigger(
- 'doctrine/dbal',
- 'https://github.com/doctrine/dbal/pull/3316',
- 'Configuration::getFilterSchemaAssetsExpression() is deprecated, use getSchemaAssetsFilter() instead.'
- );
- return $this->_attributes['filterSchemaAssetsExpression'] ?? null;
- }
- /**
- * @param string $filterExpression
- *
- * @return callable(string|AbstractAsset)
- */
- private function buildSchemaAssetsFilterFromExpression($filterExpression): callable
- {
- return static function ($assetName) use ($filterExpression) {
- if ($assetName instanceof AbstractAsset) {
- $assetName = $assetName->getName();
- }
- return preg_match($filterExpression, $assetName);
- };
- }
- /**
- * Sets the callable to use to filter schema assets.
- */
- public function setSchemaAssetsFilter(?callable $callable = null): ?callable
- {
- $this->_attributes['filterSchemaAssetsExpression'] = null;
- return $this->_attributes['filterSchemaAssetsExpressionCallable'] = $callable;
- }
- /**
- * Returns the callable to use to filter schema assets.
- */
- public function getSchemaAssetsFilter(): ?callable
- {
- return $this->_attributes['filterSchemaAssetsExpressionCallable'] ?? null;
- }
- /**
- * Sets the default auto-commit mode for connections.
- *
- * If a connection is in auto-commit mode, then all its SQL statements will be executed and committed as individual
- * transactions. Otherwise, its SQL statements are grouped into transactions that are terminated by a call to either
- * the method commit or the method rollback. By default, new connections are in auto-commit mode.
- *
- * @see getAutoCommit
- *
- * @param bool $autoCommit True to enable auto-commit mode; false to disable it.
- *
- * @return void
- */
- public function setAutoCommit($autoCommit)
- {
- $this->_attributes['autoCommit'] = (bool) $autoCommit;
- }
- /**
- * Returns the default auto-commit mode for connections.
- *
- * @see setAutoCommit
- *
- * @return bool True if auto-commit mode is enabled by default for connections, false otherwise.
- */
- public function getAutoCommit()
- {
- return $this->_attributes['autoCommit'] ?? true;
- }
- }
|