dfwLib 主な機能 †DBアクセスクラス †DBにアクセスするためのPDOラッパークラスを提供しています
DBクラスに自作メソッドを追加 †DBクラスを継承したクラスを定義し、そこに自作のメソッドを追加します。 class MyDB extends DB {
public function hoge() {
/* hoge処理 */
}
}
簡単な使い方 †
デバッグ用メソッド †
複数のDB接続 †通常CONFIGに設定したデフォルトDSN情報でDB接続します。
便利なINSERTメソッド †INSERT命令はSQL文を書かずに実行できるメソッドがあります。 $db = new DB(); $params = array( 'title'=>'ほげタイトル', 'description'=>'ほげんほげん' ); $ret = $db->insert( 'my_table', $params ); // INSERT実行 上記実行のSQLは、 INSERT INTO my_table ( title, description ) VALUES ( "ほげタイトル", "ほげんほげん" ); となります。 $db = new DB(); $params = array( 'title'=>'ほげタイトル', 'created_at'=>'NOW()' ); $ret = $db->insert( 'my_table', $params ); // INSERT実行 上記実行のSQLは、 INSERT INTO my_table ( title, created_at ) VALUES ( "ほげタイトル", NOW() ); となります。 マルチINSERT †マルチINSERT命令はSQL文を書かずに実行できるメソッドがあります。 $db = new DB(); $params[] = array( 'title'=>'ほげ1', 'description'=>'ほげん1' ); $params[] = array( 'title'=>'ほげ2', 'description'=>'ほげん2' ); $ret = $db->multiInsert( 'my_table', $params ); // INSERT実行 上記実行のSQLは、 INSERT INTO my_table ( title, description ) VALUES ( "ほげ1", "ほげん1" ),( "ほげ2", "ほげん2" ); となります。
詳細マニュアル †DBクラス エラー処理 †DB操作メソッド †DBメソッドエラー時は false(boolean) が返却されます。 $rtn = $db->exec(); if ($rtn === false) { echo 'DB execエラー'; var_dump($db->getErrorMessage()); } fetch系メソッドでは取得レコードがこれ以上ない場合「空のarray」が返却されます(ver1.1以降) $rtn = $db->fetch(); if ( empty($rtn) ) { break; } $rtn = $db->fetch(); if ( count($rtn) == 0 ) { break; } ※ Ver1.0まではfetch系メソッドでは取得レコードがこれ以上ない場合 false(boolean) が返却されます。 以下の関数のエラー時は false(boolean) が返却されます。
insertメソッド成功時は insertされたレコードの件数が返却されます(ver1.1)。 DBコンストラクタ †コンストラクタのエラーチェックは isConnect メソッドを使用します。 $db = new DB();
if (! $db->isConnect()) {
echo 'DBコネクトエラー'
var_dump($db->getErrorMessage());
}
VIEWでの自動エスケープ †モジュールPHPで設定したVIEWへの情報はエスケープ処理されます setView( 'name', '<p>tatenosystem</p>' ); エスケープしたくない情報は、setViewRaw() で設定してください setViewRaw( 'name', '<p>tatenosystem</p>' ); VIEWへの情報の渡し方(1) †
VIEWへの情報の渡し方(2) †
VIEWへの情報の渡し方(3) †
URLマッピング †URLのパス情報をGETパラメータとして取得出来ます。
URL例 http://hogehoge.jp/view/0123/tatenosystem/
セッション処理・認証処理 †通常の使い方 †特に dfwLib関数を利用する必要はありません。 session_start(); 設定ファイルにセッション名を定義してある場合は下記のコードでセッションを開始してください。 session_name( SESSION_NAME ); session_start(); セッション開始後、PHP関数でセッション処理をしてください。 $_SESSION['hoge'] = 'hogehoge'; 認証が必要な場合 †ログイン機能があるWEBアプリケーションを作成する場合は dfwLib関数を利用してください。
startFirstSession(); セッションが開始されフィンガープリントがセッションに保持(認証OK)されます。
startSession(); セッションが開始され startFirstSession() で認証がなされているかチェックします。
startSession('top');
セッションが開始され startFirstSession() で認証がなされているかチェックします。 セッション開始後、dfwLibセッション関数 又は PHP関数でセッション処理をしてください。 $_SESSION['hoge'] = 'hogehoge'; setSession( 'hoge', 'hogehoge' ); setSession( 'hoge' ); // セッション情報を削除 CSRF対策機能 †(1)情報送信ページ †モジュールで getCsrfCode関数 を実行してCSRF対策コードを取得します。 setView( 'csrfCode', getCsrfCode() ); ビューでは POST の HIDDEN データとして、CSRF対策コードを設定します。 <form name="hoge" method="post" action="">
……
<input type="hidden" name="csrfCode" value="{$csrfCode}">
……
</form>
(2)情報受信ページ †HIDDEN データとして設定したCSRF対策コードを取得します。 if ( checkCsrf( $_POST['csrfCode'] ) ) {
// 正しい
} else {
// CSRFチェックエラー
}
第2引数にモジュール名を指定すると、CSRFチェックエラー時にそのモジュールに移動します。 下記の場合はエラー時に topモジュール に移動します。 checkCsrf( $_POST['csrfCode'], 'top' ); 第2引数にモジュール名を空文字指定すると、CSRFチェックエラー時に「HTTP/1.1 403 Forbidden」となります。 checkCsrf( $_POST['csrfCode'], '' ); バリデーション †バリデーションパターン(正規表現チェック) †データの妥当性をチェックする関数(validate関数)を利用します。
if ( ! validate('NUMBER', $_GET['year']) ) {
// NG処理
}
定義文字列は , (カンマ) または - (ハイフン)で連結して使用ができます。
if ( ! validate('NUMBER,ALPHA', $_GET['code']) ) {
// NG処理
}
定義文字列がない場合は「正規表現」でバリデーションパターンを定義できます。 if ( ! validate('/^[0-9A-C]$/', $_GET['code']) ) {
// NG処理
}
文字列長チェック †データの長さを妥当性をチェックする場合は、validate関数の第3引数と第4引数に長さの範囲を指定します。
if ( ! validate('NUMBER,ALPHA', $_GET['code'], 3, 7) ) {
// NG処理
}
正規表現のチェックは省略可能です。
if ( ! validate('', $_GET['code'], 3, 7) ) {
// NG処理
}
文字列長のチェックを「バイト単位」で行いたい場合は、「validateByte関数」利用します。 正規表現チェックを行わない場合は、バリデーションパターンに空文字を設定します。
if ( ! validateByte( '', $_GET['code'], 3, 7 ) ) {
// NG処理
}
バリデーションエラーの取得 †「validate関数」でデータの妥当性がNGだった場合、エラーの詳細は「getValidateError関数」で取得できます。 「getValidateError関数」では配列を取得できます。 if ( ! validateByte('ALPHA-NUMBER-SPACE', $str, 2, 3)) {
echo '<p>データエラー</p>';
var_dump( getValidateError() );
}
getValidateError() の戻り値は失敗したチェック項目がキーとなる連想配列で取得されます。 array 'pattern' => int 1 'min' => int 1 'max' => int 1 チェック項目と連想配列のキーは、以下のとおりです。
ログ出力 †config設定ファイルに以下の記述をすると、ログ出力関数が使用できます。 // === ログ出力の使用
define('USE_LOG_OUT', 'yes');
// === ログ出力(USE_LOG_OUT yes の時に使用)
define('LOGFILE_PATH', realpath(dirname(__FILE__)).'/'.date('Y/m/d').'/out.log');
define('LOG_APP_NAME', '-');
define('LOG_LEVEL', 'debug');
ログ出力は writeLog関数を使用します。 writeLog('エラー内容', 'debug');
writeLog('エラー内容', 'd');
writeLog('エラー内容');
writeLog('エラー内容', 'info');
writeLog('エラー内容', 'i');
writeLog('エラー内容', 'warning');
writeLog('エラー内容', 'w');
writeLog('エラー内容', 'error');
writeLog('エラー内容', 'e');
writeLog('エラー内容', 'critical');
writeLog('エラー内容', 'c');
モジュール呼び出し †callModule関数 †モジュール内で callModule関数 を使用すると、HTTPリダイレクトを利用して指定したモジュールに移動します。 callModule('moduleName');
リダイレクト先へのモジュールにGET情報を送る場合は、CGIパラメータを記述します。 callModule('moduleName&site=hoge&user=ore');
設定ファイル(dfwConfig.php)記述のTOPモジュールに移動する場合 callModule(DFW_TOP_MODULE_NAME); includeModule関数 †モジュール内で includeModule関数 を使用すると、指定したモジュールをrequire_onceします。 includeModule('moduleName');
|