Configuration.php 4.77 KB
Newer Older
1
<?php
2 3 4 5 6 7 8 9 10 11 12 13 14 15
/*
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * This software consists of voluntary contributions made by many individuals
Benjamin Eberlei's avatar
Benjamin Eberlei committed
16
 * and is licensed under the MIT license. For more information, see
17
 * <http://www.doctrine-project.org>.
18
 */
19

20 21
namespace Doctrine\DBAL;

Roman S. Borschel's avatar
Roman S. Borschel committed
22
use Doctrine\DBAL\Logging\SQLLogger;
23
use Doctrine\Common\Cache\Cache;
24 25

/**
26
 * Configuration container for the Doctrine DBAL.
27
 *
Benjamin Morel's avatar
Benjamin Morel committed
28 29 30 31
 * @since    2.0
 * @author   Guilherme Blanco <guilhermeblanco@hotmail.com>
 * @author   Jonathan Wage <jonwage@gmail.com>
 * @author   Roman Borschel <roman@code-factory.org>
32 33
 * @internal 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.
34
 */
35
class Configuration
36 37 38
{
    /**
     * The attributes that are contained in the configuration.
39
     * Values are default values.
40 41 42
     *
     * @var array
     */
43
    protected $_attributes = array();
44

45 46 47
    /**
     * Sets the SQL logger to use. Defaults to NULL which means SQL logging is disabled.
     *
Benjamin Morel's avatar
Benjamin Morel committed
48 49 50
     * @param \Doctrine\DBAL\Logging\SQLLogger|null $logger
     *
     * @return void
51
     */
52
    public function setSQLLogger(SQLLogger $logger = null)
53 54 55
    {
        $this->_attributes['sqlLogger'] = $logger;
    }
56

57 58
    /**
     * Gets the SQL logger that is used.
59
     *
60
     * @return \Doctrine\DBAL\Logging\SQLLogger|null
61
     */
62
    public function getSQLLogger()
63
    {
64 65
        return isset($this->_attributes['sqlLogger']) ?
                $this->_attributes['sqlLogger'] : null;
66
    }
67 68 69 70

    /**
     * Gets the cache driver implementation that is used for query result caching.
     *
Benjamin Morel's avatar
Benjamin Morel committed
71
     * @return \Doctrine\Common\Cache\Cache|null
72 73 74 75 76 77 78 79 80 81 82
     */
    public function getResultCacheImpl()
    {
        return isset($this->_attributes['resultCacheImpl']) ?
                $this->_attributes['resultCacheImpl'] : null;
    }

    /**
     * Sets the cache driver implementation that is used for query result caching.
     *
     * @param \Doctrine\Common\Cache\Cache $cacheImpl
Benjamin Morel's avatar
Benjamin Morel committed
83 84
     *
     * @return void
85 86 87 88 89
     */
    public function setResultCacheImpl(Cache $cacheImpl)
    {
        $this->_attributes['resultCacheImpl'] = $cacheImpl;
    }
90 91

    /**
Benjamin Morel's avatar
Benjamin Morel committed
92
     * Sets the filter schema assets expression.
93 94 95 96 97 98
     *
     * Only include tables/sequences matching the filter expression regexp in
     * schema instances generated for the active connection when calling
     * {AbstractSchemaManager#createSchema()}.
     *
     * @param string $filterExpression
Benjamin Morel's avatar
Benjamin Morel committed
99 100
     *
     * @return void
101 102 103 104 105 106 107
     */
    public function setFilterSchemaAssetsExpression($filterExpression)
    {
        $this->_attributes['filterSchemaAssetsExpression'] = $filterExpression;
    }

    /**
Benjamin Morel's avatar
Benjamin Morel committed
108
     * Returns filter schema assets expression.
109 110 111 112 113 114 115 116
     *
     * @return string|null
     */
    public function getFilterSchemaAssetsExpression()
    {
        if (isset($this->_attributes['filterSchemaAssetsExpression'])) {
            return $this->_attributes['filterSchemaAssetsExpression'];
        }
Benjamin Morel's avatar
Benjamin Morel committed
117

118 119
        return null;
    }
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151

    /**
     * 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.
     *
     * @param boolean $autoCommit True to enable auto-commit mode; false to disable it.
     *
     * @see   getAutoCommit
     */
    public function setAutoCommit($autoCommit)
    {
        $this->_attributes['autoCommit'] = (boolean) $autoCommit;
    }

    /**
     * Returns the default auto-commit mode for connections.
     *
     * @return boolean True if auto-commit mode is enabled by default for connections, false otherwise.
     *
     * @see    setAutoCommit
     */
    public function getAutoCommit()
    {
        if (isset($this->_attributes['autoCommit'])) {
            return $this->_attributes['autoCommit'];
        }

        return true;
    }
152
}