我正在用PHP编写一个简单的数据库抽象层。我目前正在处理查询构建器,构建SQL“代码”的类。
有没有更好的方法来做这样的事情?
if($dbengine == "MySQL")
{
MySQLQueryBuilder::buildInsert($table, $data);
}
else if($dbengine == "PgSQL")
{
PgSQLQueryBuilder::buildInsert($table, $data);
}
// And so on...
我在想:
$querybuilder = get_class_from_name($dbengine . "QueryBuilder");
$querybuilder::buildInsert($table, $data);
关于我如何做到这一点的任何想法?
答案 0 :(得分:1)
如果你想要它是静态的,你可以这样做:
$statement = call_user_func(array($dbengine . 'QueryBuilder', 'buildInsert'), $table, $data);
但我同意Niko的评论,建筑师的实例看起来会更好。
<强>更新强>
按照Niko建议的方式,您可以这样做:
$className = $dbengine . 'QueryBuilder';
$builder = new $className();
$statement = $builder->buildInsert($table, $data);
所以根本不需要if
,代码看起来更短更清洁......