約 4,732,841 件
https://w.atwiki.jp/playaholic/pages/10.html
Mojavi PHP用のフレームワークの1つ。 Mojavi Controllerクラス Mojavi Requestクラス Mojavi Validate機能 参考URL(外部リンク) Mojavi@TryAangle MVCフレームワークMojaviを使ってみよう MojaviJapan
https://w.atwiki.jp/allegory/pages/20.html
Mojavi ※Mojavi2.0.0使用 Mojavi機能概要 PHP用のMVC(Model-View-Controller)のフレームワークです。 モジュール構造? フィルタチェーン? 複数アクションの連携? ユーザコンテナのカスタマイズ? Validation機能 認証機能と特権ユーザ設定 参考URL(外部リンク) Mojavi@TryAangle MVCフレームワークMojaviを使ってみよう MojaviJapan http //www.d-r.co.jp/mojavi/
https://w.atwiki.jp/mojavi_php/pages/6.html
mojavi導入手引き 『その1』 フレームワークについて Windowsプログラミングなどをしたことのある方には結構なじみがあるフレームワークという言葉ですが、mojaviを使うとPHPでもイベントドリブン型のソフトを簡単に作ることができます。 導入(Windows) ここでは、PHPを開発するに当たっての環境をWindowsで構築します。(私は普段、ノートPCで開発することが多いので、最初にローカルにデバグ環境を作ります。実機を使うのは最後のテスト程度) mojaviはPHPで動作するので、WindowsにPHPが入っている必要があります。また、mojaviはCGIとして動作するのでApacheも必要です。 が、今回はmojaviのテストなのでWWWサーバーはWindowsで簡単に使えるANHTTPDを使うことにします。 PHP4.3.11のダウンロード http //www.php.net/downloads.phpに行ってPHP4.3.11のZIPパッケージをダウンロードします。 ANHTTPDのダウンロード http //www.st.rim.or.jp/~nakata/に行って、ANHTTPDのZIPパッケージをダウンロードします。 まず、ANHTTPDを起動しPHPを使えるようにします。 ANHTTPDのメニューから「オプション」を選び「一般」タブの下のほうにある「追加」というボタンを押します。 出てきたダイアログボックスの「拡張子」には「.php」を入れます。「実行プログラム」には先ほどダウンロードしてきたPHPの中にある「php.exe」にパスを通します。 「一般パスでも実行する」と「PATH_TRANSLATEDを使う」にチェックを入れ「OK」を押します。 次に、今回の実験に使うディレクトリにパスを通します。 「エイリアス」タブを選択し、「一般パス」のリストの下にある「追加」を押します。出てきたダイアログには任意のエイリアス名とそのエイリアスの実態(ドライブパス)を入力します。 私はエイリアス名には「mojavi_tutorial」とし実態は「D /www/mojavi_tutorial」としました。 これからの説明はすべてドキュメントルートを「D /www/mojavi_tutorial」として説明します。環境が違う方は、自分の環境に照らし合わせて説明を読んでください。 テスト ANHTTPDを起動してください。 ブラウザで「127.0.0.1」と入力してください。ANHTTPDのディレクトリのインデックスリストが表示されれば正常にサーバーは動いています。 続いて、ドキュメントルートに「phpinfo.php」というファイルを作成し以下の内容を書き込んでください。 ?php phpinfo(); ? そうしたら、ブラウザから「http //127.0.0.1/mojavi_tutorial/phpinfo.php」を実行します。NotFoundにならなければエイリアスの設定もきちんと動いています。 但しこの状態ではPHPは実行しません。 Windowsディレクトリ(C \WINDOWS)にある「php.ini」というファイルを開いてください。439行あたりに以下のようになっている箇所を変更します。 ==============変更前================= ; cgi.force_redirect is necessary to provide security running PHP as a CGI under ; most web servers. Left undefined, PHP turns this on by default. You can ; turn it off here AT YOUR OWN RISK ; **You CAN safely turn this off for IIS, in fact, you MUST.** cgi.force_redirect = 1 ==============変更後================= ; cgi.force_redirect is necessary to provide security running PHP as a CGI under ; most web servers. Left undefined, PHP turns this on by default. You can ; turn it off here AT YOUR OWN RISK ; **You CAN safely turn this off for IIS, in fact, you MUST.** cgi.force_redirect = 0 ←ここを変えた 保存したらもう一度「http //127.0.0.1/mojavi_tutorial/phpinfo.php」を実行して画面が現れたら成功です。これでやっとサーバーが正常に動作し、PHPも使える状態になりました。 mojaviのセットアップ mojavi-2.0.0-1.zipからダウンロードします。 解凍後、そのままのディレクトリ構造ではうまく使えないので以下のように変更します。「COPYRIGHT」や「CHANGELOG」は削除しました。「lib」ディレクトリに関してはディレクトリ毎削除します。 mojaviの設定 続いてmojaviが正常に動くように設定をしてやります。 「www/index.php」の編集 15行目あたりに「require_once」で始まる行がありますね。ここには以下のように入力します。 require_once( ./../webapp/config.php ); 「webapp/config.php」の編集 このファイルにはWindowsの場合絶対パスを入力するほうが混乱無く動作します。まずは、20行あたりにある「define('BASE_DIR'...」という箇所を編集します。 define( ROOT_DIR , D /www/mojavi_tutorial/ ); //←追加 define( BASE_DIR , ROOT_DIR . webapp/ ); 「ROOT_DIR」には今回のドキュメントルートへの絶対パスを与えます。 ====26行目あたり、変更前======================= define( LOG_DIR , logs/ ); ====変更===================================== define( LOG_DIR ,BASE_DIR . logs/ ); ====32行目あたり、変更前======================= define( MOJAVI_FILE , mojavi/mojavi-all-classes.php ); ====変更===================================== define( MOJAVI_FILE ,ROOT_DIR . mojavi/mojavi-all-classes.php ); ====37行目あたり、変更前======================= define( OPT_DIR , mojavi/opt/ ); ====変更===================================== define( OPT_DIR ,ROOT_DIR . mojavi/opt/ ); ====52行目あたり、変更前======================= define( SCRIPT_PATH , ); ====変更===================================== define( SCRIPT_PATH , http //127.0.0.1/mojavi_tutorial/ ); 早速、ブラウザでアクセスしてみます。 http //127.0.0.1/mojavi_tutorial/www/index.php エラーがでますが、mojaviの正常なエラーなので問題ないです。 NotFoundなどブラウザのエラーが出てしまった場合は設定ミスです。もう一度ディレクトリ構造などから見直してみてください。 次回 今回はmojaviのセットアップまで行いました。 次回は実際に動かしてみます。
https://w.atwiki.jp/mojavi_php/pages/7.html
mojaviの導入(その2)mojaviを使ったフレームワークの概念 mojaviを使う 「hello」というアクションの処理 「hello」アクションのに対するviewの処理 テンプレートの作成「defaultindex.tpl」 実行 少し発展 次回 mojaviの導入(その2) mojaviを使ったフレームワークの概念 右下のがクライアントからのアクセス。 クライアントがmojaviにアクセスしてくると、mojaviは「action」をおこします(①の部分)。 actionを実行すると、次にviewに移ります(②の部分) viewではクライアントに返すHTMLをテンプレートから読み込みます。(③、④の部分) 以上がmojaviを使った一連の流れです。 mojaviを使う WEBプログラマはまず何をするかというと、図で言うところの「①」の処理を考えます。 クライアントからのリクエストは「http //127.0.0.1/mojavi_tutorial/www/index.php?module=Default action=hello」というようなURLでリクエストされます。またその時、GETなどのデータが付随することになります。 このリクエストでは、mojaviに「default」モジュールに「hello」というアクションを発生させるリクエストです。 一応、「Default」というモジュールは最初から存在します。 しかし、helloというアクションをどのように処理するかはプログラマが決定しなければなりません。 では、helloというアクションを受け取ったら「Hello!」という文字をクライアントに返す様なプログラムを作ってみましょう。 「hello」というアクションの処理 「/webapp/modules/Default/actions」に「helloAction.class.php」というファイルを作ってください。(文字コードはEUC) そのファイルの内容を以下のように入力します。 ?php class helloAction extends Action { function execute ( $controller, $request, $user) { $request- setAttribute( message , Hello! ); return success ; } } ? クライアントから「hello」アクションを受け取るとexecute関数がmojaviから呼び出されます。helloアクションを受け取ったときにやりたいことをここに書き込めばいいのです。 今回はなにやら難しい事がexecute関数内に書いてありますが、そのまま入力してください。 「hello」アクションのに対するviewの処理 action処理が終了すると(上のexecute関数が実行された後)mojaviはviewを呼び出します。 「/mojavi_tutorial/modules/Default/views」に「helloView_success.class.php」というファイルを作ってください。 「hello」action処理が終わると「hello」view処理が始まるわけです。その内容を「helloView_success.class.php」に書き込みます。 ?php class helloView extends View { function execute ( $controller, $request, $user) { $renderer = new Renderer($controller, $request, $user); $renderer- setTemplate( defaultindex.tpl ); $renderer- setAttribute( view_message , $request- getAttribute( message )); return $renderer; } } ? Rendererというクラスは、Smartyなどと同じくテンプレートクラスです。つまりこの例でいうなら、「defaultindex.tpl」というファイルの一部を置き換える必要があれば置き換え、その結果をクライアントに返すというクラスです。 この場合、defaultindex.tplというファイル内に「view_message」という変数が合った場合、action処理でmessageにセットいした内容を置き換えるという意味になります。 では、defaultindex.tplというファイルの中身はどうなっているのかというと...... このチュートリアルではまだ作成していないので作成しなければなりませんね。 テンプレートの作成「defaultindex.tpl」 「/webapp/modules/Default/templates」に「defaultindex.tpl」というファイルを作成します。(もちろん、文字コードをEUCで) div ?= $template[ view_message ] ? /div のように書き込み保存してください。 実行 では、早速アクセスしてみることにしましょう。 http //127.0.0.1/mojavi_tutorial/www/index.php?module=Default action=hello (ドキュメントルートにある「www」の中にある「index.php」を実行します。その時、上記のURLのようにGETパラメータをつけます) ブラウザに「Hello!」と表示されましたか? 少し発展 表示するメッセージを変えてみます。 「helloAction.class.php」 $request- setAttribute( message , Hello! ); // ←ここを変える $request- setAttribute( message , Hello!World! );と変えてみた。 アクセスすると、ブラウザに「Hello!World!」となるはずです。 次回 コレを見ている殆どのWEBプログラマはなんでactionとviewの二つに分けるんだ?めんどくさくてしょうがないと思うかもしれません。 たしかに、フレームワークを無視してaction処理時に「print」などでブラウザに表示する文字を出力した方が直感的かもしれません。 が、フレームワークの趣旨がロジックとデザインの分業なわけで。 ロジック部はすべてaction処理に任せます。例えば、ファイルから文字列を読み取るなどの処理はaction処理で行います。 読み取ったデータなどは「setAttribute関数」を使ってviewに渡します。 view処理では「getAttribute関数」でファイルから読み取ったデータをどのように表示するかを決めます。 一人の人間が両方やると、なんだか馬鹿らしいですが複数の役割分担でプログラムする場合は、分業ができるので便利かもしれません。 次回はクライアントからデータを受け取ります。双方向処理を行います。
https://w.atwiki.jp/playaholic/pages/13.html
Mojavi Validate機能 function validateをオーバーライドする。 検証内容の記述する。 エラーの場合に行う処理を記述する。 入力の検証を有効にします function validate ( $controller, $request, $user){ return TRUE; } 検証内容(※この場合は必須チェック) function registerValidators ( $validatorManager, $controller, $request, $user){ $validatorManager- setRequired( name , TRUE, nameの値を入力してください。 ); } エラーの場合の処理 function handleError ( $controller, $request, $user){ return $this- getDefaultView ($controller, $request, $user); } function validate()がTRUEの場合 function getRequestMethods()で指定した処理の時にValidate処理が行われます。 エラーが検出時はfunction handleError()が実行されます。 エラーが検出されない場合はfunction Execute()が実行されます。 Validate機能を使うと自動的に必須チェックがかかってしまう事があるので、必須チェックを行わない場合は明示的に記述する事が必要となる。 function handleError() はValidate処理でのエラー以外に、GETしか受け付けないアクションにPOSTをした、などのエラー発生時に使用されるメソッド。
https://w.atwiki.jp/allegory/pages/46.html
バリデーション機能(Validator) 入力値を検証するための便利な機能が用意されています。 mojavi/opt/validators/以下にデフォルトでいくつかのValidatorが存在します。 また、Validatorは自作する事も可能です。 ChoiceValidator.class.php EmailValidator.class.php NumberValidator.class.php RegexValidator.class.php StringValidator.class.php StripValidator.class.php?
https://w.atwiki.jp/playaholic/pages/11.html
Mojavi Controllerクラス ユーザリクエストを受け付ける。 プロセスフローを制御。 $controller変数としてActionクラスViewクラスからアクセス可能。 $controller- dispatch([$modName = null, $actName = null]) ユーザリクエストを処理する適切なアクションを決定して処理を割り当てる。 フロントコントローラindex.phpから呼び出される。 引数にModule名とAction名を与えることでMojaviをページコントローラとして動作させる。 $controller- forward($modName, $actName) 引数で指定されたActionにリクエストを転送。 しばしばActionクラス内で使用されます。 $controller- getCurrentModule() 現在のモジュール名を取得。 $controller- getCurrentAction() 現在のアクション名を取得。
https://w.atwiki.jp/wiki7_az/pages/21.html
ログイン/ログアウト/認証 checkbox の必須チェック空の場合、array にする。 validation でエラーがあった場合、フォームを再表示する。 確認画面からフォームに戻る際に、入力値を保持する。 指定したリファラ以外からのアクセスを拒否する。 モジュール内の全アクションで共通の処理を行う。 フォーム(入力・確認・完了・エラー)のモデル。 共通の action は切り離す。 画面表示には Smarty 等のテンプレートエンジンは使用しない。 メールの本文作成にはテンプレートエンジンを使用する。 DB接続 validation エラー処理 ファイルアップロード ファイルダウンロード CSVの処理 フォームの初期値表示$requestを使う ソート機能 ソート/検索機能 DB処理DAO、DTO/DTH テンプレート validationの結果、エラーがあったかどうかを調べる。 ?php if (count($request- getErrors()) = 1) { ? 下記エラー内容をご確認の上、もう一度ご入力(選択)ください。 BR ul ?php // エラーをリスト表示する foreach($request- getErrors() as $line){ echo " li " . $line . " /li "; } ? /ul ?php } ? validation の結果により、表示を変える。 tr ?php if ($request- getError( field ) != ) {? class="error" ?php } ? GET/POSTされたデータから自動的に hidden タグを生成する。 ?php $params=$request- getParameters(); foreach($params as $key = $value){ if ($key != action and $key != module ) { if(is_array($request- getParameter($key))){ foreach ($request- getParameter($key) as $value) { ? input type="hidden" name=" ?= $key ? []" value=" ?= $value ? " ?php } } else { ? input type="hidden" name=" ?= $key ? " value=" ?= $value ? " ?php } } } ?
https://w.atwiki.jp/kattsu/pages/49.html
参考サイトど忘れしました /** 日付チェック * 文字列(YYYYMMDD)が日付として有効かチェックする。 * @param String 入力文字列 YYYYMMDD * @return boolean 有効 true 無効 false */ public static boolean checkDate(String myDate) { //入力文字列が8桁以外の場合エラー if (myDate.length() != 8) { return false; } //半角数字? for (int i = 0; i myDate.length(); i++) { char charData = myDate.charAt(i); if ((charData 0 ) || (charData 9 )) { return false; } } int intYear; int intMonth; int intDay; if (myDate.length() 3) { intYear = java.lang.Integer.parseInt(myDate.substring(0, 4)); } else { intYear = 0; } if (myDate.length() 5) { intMonth = java.lang.Integer.parseInt(myDate.substring(4, 6)); } else { intMonth = 0; } if (myDate.length() == 8) { intDay = java.lang.Integer.parseInt(myDate.substring(6, 8)); } else { intDay = 0; } //カレンダーインスタンス Calendar cal = Calendar.getInstance(); //厳密性をセット cal.setLenient(false); cal.set(intYear, intMonth - 1, intDay); try { //こういうやり方はよくないが。。。 java.util.Date ud = cal.getTime(); } catch (IllegalArgumentException iae) { return false; } return true; }
https://w.atwiki.jp/allegory/pages/22.html
プログラミング> PHP 日付の妥当性チェック checkdateに引数で日付を与えると、有効であれば true、無効であれば false を返します。 月、日、年の順番に引数を渡します。 //チェックする日付 $year = 2006; $month = 4; $day = 26; if (checkdate($month, $day, $year)) { //有効な場合はtrue print "有効な日付です。"; } else { //無効な場合はfalse print "無効な日付です。"; } checkdateについて 年が1から32767の間であること。 月が1から12の間であること。 dayが指定された月 (month)の日数以内に収まること。うるう年 (year)も考慮の対象となります。