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);

しかし、私はニコのコメントに同意します。ビルダーのインスタンスがあると、はるかに見栄えが良くなります。

アップデート:

ニコが提案した方法で、あなたはただすることができました:

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

したがって、はまったくif必要ありません。コードはより短く、よりクリーンに見えます...

于 2012-06-04T18:47:52.273 に答える