▶ プログラム関連
PHP dfw2 コンセプトと基本的な動作 - dfwLib2
開発コンセプト
PHPでWebシステム開発を行ううえで、足りないと思われるところだけをライブラリ作成(主にルーティングとCVモデル)
PHPはもともとWebサービスに特化した言語であるので、大規模なフレームワークを使用しなくてもほぼ必要な機能が揃っている
「シンプルで簡単な言語でのシステム開発を、シンプルで簡単に行うためのライブラリ」
基本的にPHPで事足りるのに、さらにフレームワークを利用すると学習コストがかかる(すばやくWebサービスが作れるのがPHPのメリットでは?)
PHPフレームワークのバージョンアップが非常に激しい上に、下位互換がない場合がある(今 Symfony1系で動いているシステムを2系にバージョンアップしますか? 1系は開発終了していますけど)
1ファイルのみで実行
dfwLib2使いたい → 「index.php」さえおけばOK
内部の処理が知りたい → 「index.php」を読めばOK
- フレームワークの処理をブラックボックス化しない
- 必要最低限の機能しか提供しない
dfwLib2 提供機能
- モジュールセレクタ(ルーティング)
- Controll-View機能(Viewは PHP、Smarty、Twigを利用可能)
- XSS対策、CSRF対策、ログ出力、Validate 機能
- DBアクセスclass(PDOラッパー)※正確にはdfw2ライブラリ提供機能でありません。独立した機能(ファイル)です
dfwLib2 動作概要
HTTPリクエスト
リクエストはすべて「index.php」で実行されます(フロントコントローラーがindex.php)
GET または POST のCGIパラメータ「dfw」で、実行モジュールを指定します。
CGIパラメータ「dfw」が存在しない場合は、トップモジュールが指定されます。
(トップモジュールは bootstrap.php で指定します)
dfwLib2フロントプログラム(index.php)は、指定されたモジュールPHPを実行します。
http://sample.com/?dfw=hoge
スマートURL が ON の場合は、第1パス名でモジュールを指定します。
http://sample.com/hoge/ ← hoge.php が実行
モジュールPHPプログラム
モジュールPHPプログラムには、ビジネスロジックを記載します。
画面出力(echo)は行わないでください。
ビューで表示したい情報がある場合、setView命令でビューに受渡します。
setView( 'name', $userName );
連想配列の情報を一度に設定する事も出来ます。
setViews( $arrUserData );
モジュールPHP実行終了前に、表示するビューテンプレートを指定します。
setTemplate( 'hogeok.html' );
条件に応じて使用テンプレートを切り替えることも出来ます。
if( $result === false ) {
setTemplate( 'hoge_error.html' );
} else {
setTemplate( 'hogeok.html' );
}
return でモジュール処理を終了させることが出来ます。
if( $result === false ) {
setTemplate( 'hoge_error.html' );
return;
}
// 正常処理へ
ビューテンプレート
モジュールPHPで設定した、ビューテンプレートが表示されます。
ビューテンプレートは PHP、Smarty、Twig のどれかを使用出来ます。
(利用するテンプレートエンジンは bootstrap.php で指定します)
ビューではモジュールPHPで設定した情報を取得し表示します。
※取得した情報は自動エスケープされています
-Twigテンプレートの場合
{{name}}
-Smartyテンプレートの場合
{$name}
-PHPテンプレートの場合
<?php v('name'); ?>
dfw2 DB クラス(PDOラッパー)
dfw2 ライブラリでは「DBアクセス」のための、DBクラス(PDOラッパー)を提供しています。
DBクラスは、単体でも利用できます。(バッチ等での利用も可能)
詳細は下記の「DBクラスマニュアル」を参照してください。
dfw Ver1 との違い
- DBクラスが単体利用のため別ファイルになりました
- DBクラスが例外でのエラーハンドリングになりました(Ver1.0の戻り値falseエラーも使用可能)
- テンプレートエンジンでの自動エスケープ処理になりました(setViewRaw関数は廃止)
- includeModule関数を廃止しました
- memcachedセッションが使えるようになりました