モデルクラスでのクエリを簡素化するのに役立つクラス(データマップ)を作成しています。基本的に、このクラス(Datamap)は私のdbクラスと組み合わせて使用されます。
以前は、モデルの挿入ステートメントに必要です。
$db->query("INSERT INTO test(id,name) VALUES("id","name")");
これで、Datamapクラスを使用すると、次のようになります。
$datamap->create("test","id=id&name=name");
以下は、私が作成したDatamapクラスのスニペットコードです。
function create($tablename,$variables){
$id=0;
$tbl = $this->creturnval($variables);
$tblVal = $tbl[0];
$tblData = $tbl[1];
$this->db->execute("INSERT into $tablename($tblVal) VALUES($tblData);");
$id = $this->db->lastInsertedId();
return $id;
}
function creturnval($variables){
$vars = explode("&",$variables);
$count = sizeOf($vars);
$tblVal = "";
$tblData = "";
for($i=0;$i<$count;$i++){
$d = explode("=",$vars[$i]);
$tblVal.= $d[0].",";
$tblData.= "'".$d[1]."'".",";
}
$tblVal = rtrim($tblVal, ',');
$tblData = rtrim($tblData, ',');
$return[0] = $tblVal;
$return[1] = $tblData;
return $return;
}
私の懸念は、実際にはパフォーマンスの問題です。以前のモデルクラスでは、を使用しただけの場合$db->query()
、2つの関数を実行する必要がないため、高速になっているようです。
ここで、挿入を行うには、変数を解析し、分割するなどして、処理する必要があります。
このDatamapクラスを使用するという私の考えは、実際には、より多くの保守性と標準化を提供することです。これは、すべてのモデルクラスが乱雑に見える場所にSQLステートメントを持たないようにするためです。
これにより、パフォーマンスの問題が発生する可能性があると思いますか?
PS:Webアプリケーション用に構築した独自のフレームワークを使用しています
すべてのアドバイスに感謝します。