Download the PHP package cwola/a5m2-invoker without Composer
On this page you can find all versions of the php package cwola/a5m2-invoker. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package a5m2-invoker
a5m2-invoker
PHPから'A5:SQL Mk-2'(A5M2)を簡単に実行するためのライブラリを提供します。
Provides a simple executor from PHP to 'A5:SQL Mk-2'(A5M2).
Overview
PHPから'A5:SQL Mk-2'(A5M2)を簡単に実行するためのライブラリを提供します。
PDOでも、sshコマンドでトンネルを作っておくことで踏み台経由での接続が可能ですが、
その場合は、PDOの接続を切るまでの間バックグラウンドでポートフォワードをし続ける必要があることや、
その停止時にはプロセスを検索してキルする必要があることなどがネックです(複数プロセスが同時に動くと、プロセス番号を特定できなくなることもあります)
A5:SQL Mk-2のコマンドラインユーティリティを使用すれば、そのような問題とは おさらば です。
A5:SQL Mk-2だとテーブル定義書(HTML)なども生成できるようなので、その辺りの実行機能も追加していく予定です。
Requirement
- PHP8.0+
- cwola/attribute v1.0+
Installation
Preparation
-
A5:SQL Mk-2(コマンドラインユーティリティ)をダウンロードします。
-
jsonファイルに以下のような設定値を記載します。
※ [Usage]に記載があるように、プログラム中から各設定値を追加することが可能なので設定ファイルが存在しなくても問題はありません。
特にProviderなどは、タイプミスをしないようにプログラム上から定数(Configs::PROVIDER_xxx)で指定した方が良いでしょう。 各設定値の詳細は、設定値一覧を参照してください。- 例
Usage
- Code Sample
Note
-
プレースホルダについて
PreparedStatementのような名前付きプレースホルダ(:keyword)が使用可能ですが、これはエスケープ処理と単純な文字列置換でエミュレートされた動的プレースホルダ(のようなもの)です。
名前付きプレースホルダの名前には、半角英数とアンダースコア( _ )が使用できます。このライブラリは(コマンドラインユーティリティを使用するということから)、内製の小さな作業ツールに使用されることが想定されていますが、 SQLインジェクションを厳密に回避する必要がある場合は、独自のエスケープ処理を施した文字列を使用するか、PDO等のライブラリを使用することも検討してください。
プレースホルダは文字リテラルをシングルクォーテーション( ' )で囲みます。
したがって、エスケープ処理も(ほとんどのプロバイダで)シングルクォーテーションに対して働きますが、ダブルクォーテーションに対しては働きません。- プレースホルダの例
-
プレースホルダをサポートしていないプロバイダについて
名前付きプレースホルダがサポートされていないプロバイダで"$executor->execute(string, array)"を実行(厳密には prepare 関数を実行)すると、以下のエラーが発生します。そのような場合は、"$executor->execute(RawStatement, array)"を使用してください。
RawStatementは、指定された値をエスケープせずに「生」のままA5:SQL Mk-2へ引き渡します。
したがって、プロバイダに依存せず使用することが可能ですが、SQLインジェクションの危険性がある場合はエスケープ処理を施すことを忘れないでください。
上述のコードのように、プレースホルダ値の型を明示的に指定することで、その型以外の入力を防ぐことが可能です(InvalidArgumentExceptionが発生します)。"いちいちRawStatementを準備するのが面倒だ" "他のプロバイダと同じように処理をしたい" と思われる方は、CoreSettings::$FORCE_SUPPORT_FOR_STATEMENTをtrueに設定することができます。
これによって、prepare関数にサポートしていないプロバイダが渡された時、prepare関数は例外ではなくRawStatementを返却するようになります。
ただしこれは推奨されません。
CoreSettings::$FORCE_SUPPORT_FOR_STATEMENTはグローバルスコープで影響するためです。
Licence
ソースの一部はPostgreSQLのコードを参考に作成されています。