1

次のようなことを行うことで、ドライバーを持っているデータベースへの複数の接続を作成できる学習目的で、データベース抽象化クラスを作成して遊んでいました。

//Create multiple database connections
$db1 = new DatabaseFactory("MySQL","root","","localhost");
$db2 = new DatabaseFactory("MySQL","root","","localhost");

また...

$db = new DatabaseFactory("SQLite");

しかし、私はそれについて考えなければなりませんでした.ファクトリオブジェクトとの複数の接続を管理する必要がない限り、PDO の出現でこのようなものは本当に必要ありませんか?

私の質問は、PDO にさらなる抽象化レイヤーを追加することは有用だと思いますか? またその理由は?

4

2 に答える 2

1

ORM のようなものではなく、厳密にデータベース レベルの操作の抽象化を考えると、異なるデータベース間の SQL サポートの問題がまだあります。

たとえば、SQLite、Postgre、MySQL を比較すると、それらはすべて同じ構文をサポートしていますが、さまざまな違いもあります。

PDO は、プラットフォーム間の SQL サポートの違いを抽象化する手段を講じません。

別のレイヤーを使用して非表示にできるものもいくつかあります。ただし、それが非常に実行可能かどうかは少し疑わしいです。たとえば、ソフトウェアを使用して SQLite などで外部キー チェックをエミュレートしようとすることを検討してください。

于 2012-01-04T23:53:42.943 に答える
0

PDO は、古い mysql 関数バケットよりも大幅に改善されていますが、データベースにアクセスするための非常に低レベルの API です。

そのため、ほとんどの状況では、より高いレベルの API をラップすることは依然として理にかなっています。

たとえば、より高いレベルの API を使用して、SQL インジェクション攻撃を事実上不可能にすることができます。

于 2012-01-04T23:51:54.583 に答える