2011-10-30 5 views
0

私はZFを使い始めましたが、かなりの時間を節約できるライブラリがいくつかありますが、mysqliに比べてZend_DBクラスを使用する利点はありません。私はいつもDBMSとしてMySQLを使用するので、PDOは必要ありません。とにかく、プロジェクトの途中でDBMSをどのくらい頻繁に変更するのですか?mysqliに比べてZend_Dbモデルを使用する利点は何ですか?

私はSQLに非常に慣れているので、抽象化を必要とせず、ただ混乱させます。

私のクラスのコンストラクタにこのmysqliコードがあり、それに必要なときにSQLクエリがどのような利点がありますか?

require_once("database_details.php"); 
$this->_mysql=new mysqli(DBSERVERHOST,DBUSERNAME,DBPASSWORD,DBNAME); 

答えて

2

私はドンノZFですが、裸のmysqliはちょっと醜いです。テンプレートを作成する行を取得するコードは何ですか?
いくつかのライブラリを使用すると、

$data=$db->getArr("SELECT * FROM myCity WHERE Name=? AND CountryCode=? AND District=?" 
        $val1, $val2, $val3); 
ようにそれを作ることができますがの(つまり、エラー処理などの無義務的なもので、マニュアルから単なる例です)、それは

$query = "SELECT * FROM myCity WHERE Name=? AND CountryCode=? AND District=?"; 
$stmt = $mysqli->prepare($query); 
$stmt->bind_param("sss", $val1, $val2, $val3); 
$stmt->execute(); 
$data = array(); 
if ($result = $mysqli->query($query)) { 
while ($row = $result->fetch_row()) { 
    $data[] = $row; 
} 

と同じように惨めだ

を想定してみましょう

あなたの通常のスクリプトでクエリの数を数えれば違いを感じることができます。

貴重なSQLをそのまま残しておいてください。

+0

私はそれがもう少しエレガントに見えると思います。私は辞書の中でうそ見を見つけなければならなかった。 – georgiecasey

1

多くの利点があります。私はそれらのすべてを知っていませんが、二人はただ傑出している:

1)アダプターの依存/コード独立性を どんなにあなたが使用しているものデータベース - クエリのコードが変更されることはありません。

$db->select()->where('a=?', $b)->order('C DESC')->limit(5); 

アダプタは、MySQL、PGSQL、MSSQLなどであればそれは問題ではありません...私は、さらにいくつかのNoSQL - データベースをZendの

2で同じクエリ形式でサポートされていると思います)のキャッシング クエリ用ライブラリを使用する場合、特にZendやDoctrine(combineable!)を使用する場合、DBクエリのキャッシュはケーキです。あなたのクエリごとに手動でこれを行うと、あなたは、コードのloooootsを持つように運命づけている:P

3)読みやす 個人的に私はちょうど(あまりにも、あなた自身のいずれかになります)ライブラリを使用しての多くを持っていることを感じます読みやすくするための利点

+0

1)OPで言及されているように、実際の利点ではありません。2)コントローラのレベルで駆動されている、よりインテリジェントなビットで、クエリ結果をキャッシュするほどダムではありません。 –

+0

さて、OPは、実行中のプロジェクトがDBMSを変更しないという意味で正しいかもしれません。しかし、新しいプロジェクトが出荷され、クライアントが別のDBMSを必要とする場合は、すべてを再考する必要はありません。別のアダプタを用意するだけで、あなたが何をやっているのかをやり遂げるだけです。新しい機能はなく、すべての古いもの:)そして明らかに2)もっと多くなることができます - これはちょうど与えられた例でした – Sam

+0

私は好奇心が強いです、あなたは自分でこのようなことをしましたか? –