sqlite_create_function SQLiteDatabase::createFunction SQLステートメントで使用するために"通常の"ユーザー定義関数を登録する &reftitle.description; voidsqlite_create_function resourcedbhandle stringfunction_name callablecallback intnum_args-1 &style.oop; (メソッド): voidSQLiteDatabase::createFunction stringfunction_name callablecallback intnum_args-1 sqlite_create_function により、SQLiteにPHP関数 をUDF (ユーザー定義関数)として登録することが可能で す。この関数は、SQLステートメントの中からコールできます。 UDFは、SELECTおよびUPDATEステートメント、そして、トリガーの中のよう に関数をコールできる全てのSQLステートメントで使用可能です。 &reftitle.parameters; dbhandle SQLite データベースリソース。手続きに従って、 sqlite_open から返されます。 このパラメータは、 オブジェクト指向言語型メソッドを使用する場合は不要です。 function_name SQL ステートメントで使用する関数名 callback 定義された SQL 関数を処理するためのコールバック関数 コールバック関数は SQLite で有効な型 (例えば スカラー型) を返す必要があります num_args コールバック関数が規定の引数の数を受け入れるかどうかを決定するため SQLite パーサに渡すヒント &sqlite.param-compat; &reftitle.returnvalues; &return.void; &reftitle.examples; <function>sqlite_create_function</function> の例 ]]> この例では、文字列のMD5サムを計算し、順番を反転する関数が記述されています。 このSQLステートメントが実行された場合、 関数により変換されたファイル名の値を返します。 $rows により返されるデータには、 処理結果が含まれています。 この技術の美しいところは、データのクエリーを実行した後で &foreach; ループにより結果を処理する必要がないことです。 PHP は、データベースが最初にオープンされる際に php という名前の特別な関数を登録します。 このphp関数は、事前に登録することなしにあらゆるPHP関数をコールする ために使用可能です。 PHP 関数の使用例 ]]> この例は、データベースの各 filename カラムにつ いて md5 をコールし、その結果を $rowsに返します。 性能上の理由から、PHPはUDFとの間で送受信されるバイナリデータを自動 的にエンコード/デコードしません。この方法でバイナリデータを処理す る必要がある場合、パラメータを手動でエンコード/デコードし、 値を返すようにする必要があります。 詳細については、sqlite_udf_encode_binary およびsqlite_udf_decode_binaryを参照して下さ い。 適用するアプリケーションの主要な要求が高い性能でない限り、バイナリ データの処理を行うためにUDFを使用することは推奨されません。 SQLiteのネーティブSQL関数をオーバーライドするために sqlite_create_functionおよび sqlite_create_aggregateも使用可能です。 &reftitle.seealso; sqlite_create_aggregate