sql - PHP Abstraction Layer - Get class from name -


i'm writing simple database abstraction layer in php. i'm working on query builders, classes build sql "code".

are there better ways doing this?

if($dbengine == "mysql") {     mysqlquerybuilder::buildinsert($table, $data); } else if($dbengine == "pgsql") {     pgsqlquerybuilder::buildinsert($table, $data); } // , on... 

i'm thinking like:

$querybuilder = get_class_from_name($dbengine . "querybuilder"); $querybuilder::buildinsert($table, $data); 

any ideas on how can this?

you if want static:

$statement = call_user_func(array($dbengine . 'querybuilder', 'buildinsert'), $table, $data); 

but agree niko comment, having instance of builder nicer.

update:

with way niko suggested, do:

$classname = $dbengine . 'querybuilder'; $builder = new $classname(); $statement = $builder->buildinsert($table, $data); 

so no ifs required @ all, code looks shorter , cleaner...


Comments