* (c) 2004-2006 Sean Kerr * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * sfDatabase is a base abstraction class that allows you to setup any type of * database connection via a configuration file. * * @package symfony * @subpackage database * @author Fabien Potencier * @author Sean Kerr * @version SVN: $Id: sfDatabase.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $ */ abstract class sfDatabase { protected $parameterHolder = null, $connection = null, $resource = null; /** * Class constructor. * * @see initialize() */ public function __construct($parameters = array()) { $this->initialize($parameters); } /** * Initializes this sfDatabase object. * * @param array $parameters An associative array of initialization parameters * * @return bool true, if initialization completes successfully, otherwise false * * @throws sfInitializationException If an error occurs while initializing this sfDatabase object */ public function initialize($parameters = array()) { $this->parameterHolder = new sfParameterHolder(); $this->parameterHolder->add($parameters); } /** * Connects to the database. * * @throws sfDatabaseException If a connection could not be created */ abstract function connect(); /** * Retrieves the database connection associated with this sfDatabase implementation. * * When this is executed on a Database implementation that isn't an * abstraction layer, a copy of the resource will be returned. * * @return mixed A database connection * * @throws sfDatabaseException If a connection could not be retrieved */ public function getConnection() { if (null === $this->connection) { $this->connect(); } return $this->connection; } /** * Retrieves a raw database resource associated with this sfDatabase implementation. * * @return mixed A database resource * * @throws sfDatabaseException If a resource could not be retrieved */ public function getResource() { if (null === $this->resource) { $this->connect(); } return $this->resource; } /** * Gets the parameter holder for this object. * * @return sfParameterHolder A sfParameterHolder instance */ public function getParameterHolder() { return $this->parameterHolder; } /** * Gets the parameter associated with the given key. * * This is a shortcut for: * * $this->getParameterHolder()->get() * * @param string $name The key name * @param string $default The default value * * @return string The value associated with the key * * @see sfParameterHolder */ public function getParameter($name, $default = null) { return $this->parameterHolder->get($name, $default); } /** * Returns true if the given key exists in the parameter holder. * * This is a shortcut for: * * $this->getParameterHolder()->has() * * @param string $name The key name * * @return boolean true if the given key exists, false otherwise * * @see sfParameterHolder */ public function hasParameter($name) { return $this->parameterHolder->has($name); } /** * Sets the value for the given key. * * This is a shortcut for: * * $this->getParameterHolder()->set() * * @param string $name The key name * @param string $value The value * * @see sfParameterHolder */ public function setParameter($name, $value) { $this->parameterHolder->set($name, $value); } /** * Executes the shutdown procedure. * * @return void * * @throws sfDatabaseException If an error occurs while shutting down this database */ abstract function shutdown(); }