0

我正在用 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);

关于我如何做到这一点的任何想法?

4

1 回答 1

1

如果你希望它是静态的,你可以这样做:

$statement = call_user_func(array($dbengine . 'QueryBuilder', 'buildInsert'), $table, $data);

但我同意 Niko 的评论,拥有 builder 的实例会更好看。

更新:

按照 Niko 建议的方式,您可以这样做:

$className = $dbengine . 'QueryBuilder';
$builder = new $className();
$statement = $builder->buildInsert($table, $data);

所以根本if不需要,代码看起来更短更干净......

于 2012-06-04T18:47:52.273 回答