CXVII. Paradox ファイルアクセス

導入

警告

この拡張モジュールは、 実験的 なものです。この拡張モジュールの動作・ 関数名・その他ドキュメントに書かれている事項は、予告なく、将来的な PHP のリリースにおいて変更される可能性があります。 このモジュールは自己責任で使用してください。

このモジュールにより、Paradox データベースおよび プライマリインデックスファイル、blob ファイルへの読み書きが可能となります。 書き込み機能はきわめて信頼性の高いものとなっていますが、 出来上がったファイルが他のアプリケーションから読み込めない可能性もあります。 というのも、Paradox についての資料があまりないからです。 pxlib >= 0.5.0 を使用すると、パスワードを指定しなくても 暗号化されたデータベースを読み込めます。

注意: このモジュールは開発途中であり、今後変更される可能性があります。 とはいえ、API に大きな変更を加えるつもりはありません。

要件

関数の基本セットを使用するには、少なくとも PHP 5.0.0 および pxlib >= 0.4.4 が必要です。いくつかの新しい関数は、 pxlib >= 0.6.0 でのみ使用可能となります。 暗号化されたデータベースの読み書きには、少なくとも pxlib >= 0.5.0 が必要です。 paradox ライブラリ (pxlib) は、 http://pxlib.sourceforge.net で取得できます。

インストール手順

この PECL 拡張モジュールをインストールする方法は、 マニュアルの PECL 拡張モジュールのインストール という章にあります。 新規リリース・ダウンロード・ソースファイル・管理者情報・CHANGELOG といった関連する情報については、次の場所にあります。 http://pecl.php.net/package/paradox

事前に pxlib をインストールしておいてください。 rpm や debian パッケージで pxlib をインストールした場合は、 開発者向けパッケージも忘れずにインストールしてください。

実行時設定

設定ディレクティブは定義されていません。

オブジェクト指向の API

paradox 拡張モジュールは、オブジェクト指向の API も提供しています。 この中に含まれるクラスは paradox_db だけです。 そのメソッドと関数の違いは、まず名前、 そしてもちろん最初のパラメータがないことです。 次の表に、すべてのメソッドとそれに対応する関数を示します。

表 1. paradox_db クラスのメソッド

メソッド名同等な関数
コンストラクタpx_new()
デストラクタpx_delete()
open_fp()px_open_fp()
create_fp()px_create_fp()
close()px_close()
numrecords()px_numrecords()
numfields()px_numfields()
get_record()px_get_record()
put_record()px_put_record()
retrieve_record()px_retrieve_record()
delete_record()px_delete_record()
insert_record()px_insert_record()
update_record()px_update_record()
get_field()px_get_field()
get_schema()px_get_schema()
get_info()px_get_info()
set_parameter()px_set_parameter()
get_parameter()px_get_parameter()
set_value()px_set_value()
get_value()px_get_value()
get_info()px_get_info()
set_targetencoding()px_set_targetencoding()
set_tablename()px_set_tablename()
set_blob_file()px_set_blob_file()
date2string()px_date2string()
timestamp2string()px_timestamp2string()

リソース型

px_new() は新しい Paradox オブジェクトを作成します。 これは、すべての Paradox 関数で必要となります。

定義済み定数

以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。

以下のふたつの表で、paradox 拡張モジュールで定義されている全ての定数を示します。

表 2. フィールド型の定数

名前意味
PX_FIELD_ALPHA固定長の文字データ
PX_FIELD_DATE日付。0000 年 1 月 1 日からの経過日数
PX_FIELD_SHORTShort 型の整数 (2 バイト)
PX_FIELD_LONGLong 型の整数 (4 バイト)
PX_FIELD_CURRENCYPX_FIELD_NUMBER と同じ
PX_FIELD_NUMBERDouble
PX_FIELD_LOGICALBoolean
PX_FIELD_MEMOBLOBバイナリラージオブジェクト
PX_FIELD_BLOBバイナリラージオブジェクト (サポートされません)
PX_FIELD_FMTMEMOBLOBバイナリラージオブジェクト
PX_FIELD_OLEOLE オブジェクト (基本的に blob です。サポートされません)
PX_FIELD_GRAPHIC画像 (基本的に blob です。サポートされません)
PX_FIELD_TIME時刻。深夜 0 時からの経過ミリ秒数
PX_FIELD_TIMESTAMPタイムスタンプ。0000 年 1 月 1 日からの経過ミリ秒数
PX_FIELD_AUTOINC自動インクリメントの整数 (PX_FIELD_LONG と似ています)
PX_FIELD_BCDbcd フォーマットで保存された十進数 (サポートされません)
PX_FIELD_BYTES255 バイトをこえないバイト配列 (サポートされません)
PX_KEYTOLOWERすべてのフィールド名を小文字にします
PX_KEYTOUPPERすべてのフィールド名を大文字にします

表 3. ファイル型の定数

名前意味
PX_FILE_INDEX_DBインデックス化されたデータベース
PX_FILE_PRIM_INDEXプライマリインデックス
PX_FILE_NON_INDEX_DBインデックス化されていないデータベース
PX_FILE_NON_INC_SEC_INDEXインクリメンタルでないセカンダリインデックス
PX_FILE_SEC_INDEXセカンダリインデックス
PX_FILE_INC_SEC_INDEXインクリメンタルなセカンダリインデックス
PX_FILE_NON_INC_SEC_INDEX_Gインクリメンタルでないセカンダリインデックス
PX_FILE_SEC_INDEX_Gセカンダリインデックス
PX_FILE_INC_SEC_INDEX_Gインクリメンタルなセカンダリインデックス

目次
px_close -- paradox データベースを閉じる
px_create_fp -- 新しい paradox データベースを作成する
px_date2string --  日付を文字列に変換する
px_delete_record -- paradox データベースからレコードを削除する
px_delete -- paradox データベースのリソースを削除する
px_get_field -- 単一のフィールドの仕様を返す
px_get_info -- paradox ファイルに関する多くの情報を返す
px_get_parameter -- パラメータを取得する
px_get_record -- paradox データベースのレコードを返す
px_get_schema -- データベーススキーマを返す
px_get_value -- 値を取得する
px_insert_record -- paradox データベースにレコードを挿入する
px_new -- 新しい paradox オブジェクトを作成する
px_numfields -- データベース内のフィールドの数を返す
px_numrecords -- データベース内のレコードの数を返す
px_open_fp -- paradox データベースをオープンする
px_put_record -- paradox データベースにレコードを保存する
px_retrieve_record -- paradox データベースのレコードを返す
px_set_blob_file -- blob を読み込むファイル名を設定する
px_set_parameter -- パラメータを設定する
px_set_tablename -- テーブルの名前を設定する (非推奨)
px_set_targetencoding -- 文字フィールドのエンコーディングを設定する (非推奨)
px_set_value -- 値を設定する
px_timestamp2string --  タイムスタンプを文字列に変換する
px_update_record -- paradox データベースのレコードを更新する