cakephp2-php8/libs/dbo_factory.php
pies da79dff7d7 - merged in Brego's SimpleTest implementation, fixed some of the tests (the Folder test fails to delete one of the test directories on my system, so it's not perfectly clean yet)
- Dispatcher sets a Controller::here variable with the real URL used to access the page, so that tag generators can that use an url (linkTo and formTag for example) use the real url, not guess it from the controller and action names which often fails
- Log class works more reliably and a LogError() shortcut function was added
- Nstring class added, to store string-related functions (there are just four yet, including a random password generator and an string-to-array splitter
- SimpleTest library (with Rephlux) included in /vendors; I've tweaked SimpleScorer::inCli() function, because it didn't work on my setup, it should work everywhere now (it checks for empty REQUEST_METHOD, which should only be empty in CLI)

git-svn-id: https://svn.cakephp.org/repo/trunk/cake@248 3807eeeb-6ff5-0310-8944-8be069107fe0
2005-06-18 23:26:35 +00:00

96 lines
No EOL
2.7 KiB
PHP

<?PHP
//////////////////////////////////////////////////////////////////////////
// + $Id$
// +------------------------------------------------------------------+ //
// + Cake <https://developers.nextco.com/cake/> + //
// + Copyright: (c) 2005, Cake Authors/Developers + //
// + Author(s): Michal Tatarynowicz aka Pies <tatarynowicz@gmail.com> + //
// + Larry E. Masters aka PhpNut <nut@phpnut.com> + //
// + Kamil Dzielinski aka Brego <brego.dk@gmail.com> + //
// +------------------------------------------------------------------+ //
// + Licensed under The MIT License + //
// + Redistributions of files must retain the above copyright notice. + //
// + See: http://www.opensource.org/licenses/mit-license.php + //
//////////////////////////////////////////////////////////////////////////
/**
* Purpose: DbFactory
*
* Description:
* Creates DBO-descendant objects from a given db connection configuration
*
* @filesource
* @author Cake Authors/Developers
* @copyright Copyright (c) 2005, Cake Authors/Developers
* @link https://developers.nextco.com/cake/wiki/Authors Authors/Developers
* @version $Revision$
* @modifiedby $LastChangedBy$
* @lastmodified $Date$
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
*/
/**
* Enter description here...
*
*/
uses('object');
config('database');
/**
* Enter description here...
*
* @package cake
* @subpackage cake.libs
* @since Cake v 1.0.0.0
*
*/
class DboFactory extends Object
{
/**
* Enter description here...
*
* @param unknown_type $activeConfig
* @return unknown
*/
function make($activeConfig)
{
if (!class_exists('DATABASE_CONFIG'))
return false;
$config = DATABASE_CONFIG::$activeConfig();
// special case for AdoDB -- driver name in the form of 'adodb-drivername'
if (preg_match('#^adodb[\-_](.*)$#i', $config['driver'], $res))
{
uses('dbo/dbo_adodb');
$config['driver'] = $res[1];
$conn = new DBO_AdoDB($config);
return $conn;
}
// special case for PEAR:DB -- driver name in the form of 'pear-drivername'
elseif (preg_match('#^pear[\-_](.*)$#i', $config['driver'], $res)) {
uses('dbo/dbo_pear');
$config['driver'] = $res[1];
$conn = new DBO_Pear($config);
return $conn;
}
// regular, Cake-native db drivers
else
{
$db_driver_class = 'DBO_'.$config['driver'];
$db_driver_fn = LIBS.strtolower('dbo'.DS.$db_driver_class.'.php');
if (file_exists($db_driver_fn))
{
uses(strtolower('dbo'.DS.$db_driver_class));
return new $db_driver_class ($config);
}
else
{
trigger_error(ERROR_UNKNOWN_DATABASE_DRIVER, E_USER_ERROR);
return false;
}
}
}
}
?>