62 lines
1.3 KiB
PHP
62 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;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
?>
|