Drupal 7 - PHP PDO を介した DB 操作
Drupal 7 への移行に伴い、PDO の上に構築された新しい Drupal DB 抽象化レイヤー API に移ります。PDO は、Zend のようなフレームワークや、その他多くの PHP フレームワークで長く使われてきました。しかし、Drupal 6 ではプレーンな SQL クエリを書くことがとても便利に思えました――では、なぜ新しいものが必要なのでしょうか?
まず、PDO とは何かを理解しましょう。
PDO を使うと、あるデータベースを扱う PHP コードを、大きな変更なしに別のデータベースに移植できます。たとえば、サイトが MySQL を使っていた場合、最小限の調整で PostgreSQL に切り替えられます。Oracle でまだ試したことはありませんが、そこでも動作すると期待されます。
PHP Data Objects(PDO)は、データベースにアクセスするための軽量で一貫したインターフェースを提供する PHP 拡張機能です。各データベースドライバーは PDO インターフェースを通じて実装され、各 DB サーバーに固有の機能を含むこともあります。
PDO はデータベース抽象化レイヤーへのアクセスを提供し、それがクエリの処理とデータの表現に使われます。ただし、PDO は完全なデータベース抽象化を提供するわけではありません――SQL を書き換えたり、特定のデータベースサーバーに欠けている機能をエミュレートしたりはしません。そのような機能が必要な場合は、代わりに全機能を備えた抽象化レイヤーを使う必要があります。PDO は PHP 5.1 以降と互換性があり、PHP 5 用の PECL 拡張機能として利用できます。PHP 5 で導入された新しいオブジェクト指向機能を必要とし、それより前の PHP バージョンではサポートされません。
これは、開発者がクロスプラットフォームのデータベースコードをより簡単に書けることを意味します。PDO は PearDB のような抽象化レイヤーではありません。むしろ、PDO は高水準の API というより、一貫した DB アクセスインターフェースです。
Drupal 7 用のモジュールを書きたい場合は、モジュールがさまざまなデータベースエンジンで動作するように、データベースクエリの記述に PDO ベースの構文を使わなければなりません。