61 lines
1.3 KiB
PHP
61 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace alveolata\database;
|
|
|
|
// require_once(DIR_ALVEOLATA . '/definitions.php');
|
|
require_once(DIR_ALVEOLATA . '/database/abstract/interface.php');
|
|
require_once(DIR_ALVEOLATA . '/database/implementation-sqlite/wrapper-class.php');
|
|
require_once(DIR_ALVEOLATA . '/database/implementation-mysql/wrapper-class.php');
|
|
require_once(DIR_ALVEOLATA . '/database/implementation-postgresql/wrapper-class.php');
|
|
|
|
|
|
/**
|
|
* @author Christian Fraß <frass@greenscale.de>
|
|
*/
|
|
function make(
|
|
string $kind,
|
|
array $parameters
|
|
) : interface_database
|
|
{
|
|
switch ($kind) {
|
|
default: {
|
|
throw (new \Exception(sprintf('invalid database kind "%s"', $kind)));
|
|
break;
|
|
}
|
|
case 'sqlite': {
|
|
return (
|
|
implementation_sqlite::make(
|
|
$parameters['path'],
|
|
$parameters['verbosity'] ?? 0
|
|
)
|
|
);
|
|
break;
|
|
}
|
|
case 'mysql': {
|
|
return (
|
|
implementation_mysql::make(
|
|
$parameters['host'],
|
|
$parameters['port'],
|
|
$parameters['schema'],
|
|
$parameters['username'],
|
|
$parameters['password']
|
|
)
|
|
);
|
|
break;
|
|
}
|
|
case 'postgresql': {
|
|
return (
|
|
implementation_postgresql::make(
|
|
$parameters['host'],
|
|
$parameters['port'],
|
|
$parameters['schema'],
|
|
$parameters['username'],
|
|
$parameters['password']
|
|
)
|
|
);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
?>
|