moony

filter処理

ついでにfilter処理も実装することに。アクションクラスでMoony_Action::filterをオーバーライドすると、validate実行前にリクエストパラメータの変換/置換ができる。例えば、以下のように。 class FooAction extends Moony_Action { function filter($requ…

アクション名のcamel case

"/app/user_regist"というPATH_INFOが渡された場合、現行のMoonyの仕様だとアクション名が"AppUser_regist"になってしまう。これはどうにも格好悪い。アンダーバーで区切られた文字列はcamel caseに変換して、"AppUserRegist"とした方が格好いいんじゃないか…

0.9.0に向けて

Validationの実装、とりあえず完了。まだ「動く」レベルで、コードもやたら冗長だけど。巨大なMoony_Validator、Moony_SmartyPluginクラスができてしまった。機能単位にクラスを分けた方がよかったかな?で、ついでにディレクトリ構成も変えてみた。PEARの構…

validation機能実装、途中経過

入力フォームテンプレートを下記のように用意すると、 <form action="/input.php/regist" method="post"> {moony_text name='name' errorClass='error' xhtml=true} {moony_error name='name' prefix='<span class="error">' postfix='</span>'}<br /> <input type="submit" /> </form>実際のhtmlとして以下のように展開される。

validation機能の実装方法、チェックボックスとか

validationエラーで遷移元の画面に戻るとき、入力値を復元してあげるのが理想的な画面設計。単純なテキスト項目は可能なんだけど、チェックボックスとかの場合難しい…。どうしたものか。Smartyのプラグインを作れば解決するけど、それは最後の手段としてとっ…

簡易validation機能

簡易validation機能を実装中…。 <form action="/index.php/regist" method="post"> <input type="text" name="yourname" value="{$yourname}" /> {moony_error name="yourname" prefix="<span class=\"error\">" postfix="</span>"}<br /> <input type="submit" /> </form>のようなフォームがあった場合、 class RegistAction extends Moony_Action …

0.8.1リリース

Moony 0.8.1をリリースしました。3件のバグ修正を含みます。ダウンロードはSourceForge.jpからどうぞ。変更点は以下のとおり: Moony_Session::startでセッションIDを再生成する際、古いセッションクッキーを削除するように(バグ修正) Moony_Controllerでア…

続々・トランザクショントークン

アクション内でチェックする方法をもっと簡単にしてみた。これで確定…だと思う。 class FooAction extends Moony_Action { function execute($request, $response) { if ($this->checkToken()) { // OK } else { // NG } } }メソッド名を何にするか考えたの…

トランザクショントークンの続き

いちいちhiddenフィールドを書くのは面倒だし、項目名を間違える可能性があるのでSmartyのpluginを作ってみた。これもMoony 0.8.1で追加予定。使い方はこんな感じ: {moony_token xhtml=true}テンプレートのform内に上記のように記述すると、以下のように展開…

トランザクショントークン

トランザクショントークンの生成/チェック機能を実装してみる。この機能はMoony 0.8.1で追加される予定。Moony_Tokenというクラスを新たに追加、メソッドを2つ用意する。 generate(&$session, &$response) セッションが開始されている場合 ランダムな文字列…

0.8.0リリース

Moony 0.8.0をリリースしました。2件のバグ修正を含みます。また、クラス構造が0.7.xから変更になっているので注意してください。ダウンロードはSourceForge.jpからどうぞ。 変更点は以下のとおり: Moony_DB::rollback、Moony_DB::commitの各メソッドを実行…

Moony_Downloaderクラス

Moony 0.8.0からMoony_Downloaderクラスを追加する予定です。明示的に呼び出して使用することは想定していません。Moony_Controllerの内部で使用されます。 ファイルをダウンロードさせたい場合は: <a href="/index.php/download">ダウンロード</a>上記のようなリンクがある場合、 class Downlo…

Moony_Uploaderクラス

Moony 0.8.0からMoony_Uploaderクラスを追加する予定です。使用例は: <form action="/index.php/upload" enctype="multipart/form-data" method="POST"> <input type="file" name="userfile" /> <input type="submit" value="send" /> </form>上記のようなフォームがある場合、 class UploadAction extends Moony_Action { function execute($request, $respons…

0.8.xに向けて

以下のような構造の変更を考えています: Moony_Contextの廃止 Moony_SessionのインスタンスはMoony_Requestが保持 getSession/setSessionメソッドを実装 PATH_INFOを取得するアクセサをMoony_Requestに移動 getPathInfo/setPathInfoメソッドを実装 Moony_Res…

0.7.2リリース

Moony 0.7.2をリリースしました。1件のバグ修正を含みます。ダウンロードはSourceForge.jpからどうぞ。 変更点は以下の通り: テンプレートファイルが見つからない場合、httpのステータスで500ではなく404を返すように修正(バグ修正) Moony_Viewにメソッドa…

データベースアクセスクラス

やっぱりDBアクセス用のライブラリがないと不便なので、簡易的なクラスを作ることに。 次のMoonyのリリースに含める予定、クラス名はMoony_DB。 内部でPEAR::DBを利用 プレースホルダーを含むSQLを実行可能 簡単なトランザクション制御が可能 検索メソッドを…

チュートリアルの書き方

チュートリアルを書こうと思ったんだけど、バージョンが変わると有効でなくなってしまう記述が多く含まれてしまう可能性があることに気づいた。定期的に修正を加えるか、あるいはアーカイブとして各バージョン用のチュートリアルを残していくか。いろいろ書…

チュートリアル - フロントコントローラ

Moonyを動作させるためには、フロントコントローラが必要です。フロントコントローラには3つの役割があります。 PATH_INFOを受け取ること Moonyを起動するための設定を行うこと Moonyのインスタンスを生成し、起動させること 例えば、フロントコントローラを…

0.7.1リリース

Moony 0.7.1をリリースしました。バグFixとほんの少し機能追加です。 ダウンロードはSourceForge.jpからどうぞ。変更点は: Moonyクラスでエンコーディングに関する余計な処理を行っていたのを除去(バグ修正) Moony_Config.phpに「リクエストパラメータのエ…

0.7.0リリース

Moony 0.7.0をリリースしました。 今回のバージョンからPEARパッケージ形式でのリリースとなります。インストールする際、 $ pear install /path/to/Moony-0.7.0.tar.gzとすればPEARのディレクトリにインストールされます。ダウンロードはSourceForge.jpのペ…

Moony_View extends Smarty

Moony_ViewからSmartyを操作するメソッドについて考えていたら、突然ものすごく面倒になった。メソッド名とか、機能の取捨選択とか考えているときりがない。そこでMoony_ViewをSmartyのサブクラスとして実装を変更してみた。サブクラスなので、複雑な機能を…

配布/インストール方法

Ethna 0.2.0がリリースされた。pearコマンドでインストールできるようになっていて便利。レンタルサーバなどで利用する場合には、配置したディレクトリをinclude_pathに追加すればいいわけで、なかなか扱いやすい形式かもしれない。Moonyの次期バージョンをp…

Moonyクラス図(開発中のversion 0.7.0に準拠)

やっつけで書いてみた(作図にはJUDEを使用)。 /index.php/foo.htmlを表示する場合、オレンジ色の部分の実装が必要。 規約により アクションクラス名: FooAction デフォルトで使用されるテンプレートファイル名: Foo.tpl index.phpはfront controllerで、we…

初期化の方法・案2

Smartyの初期化方式を真似してもいいかもしれないと思いつく。こんな感じ: action_dir = '/path/to/actions'; $moony->template_dir = '/path/to/templates'; $moony->work_dir = '/path/to/work'; $moony->log_dir = '/path/to/log'; $moony->smarty_class =…

初期化の方法・案1

次のバージョンでは、より手軽に利用できるような形態に変更しようと思っている。 例えば、下記のようなindex.phpを用意すれば、 '/path/to/actions', 'template_dir' => '/path/to/templates', 'work_dir' => '/path/to/work', 'log_dir' => '/path/to/log…

プロジェクトホームページを更新

Moonyのプロジェクトホームページを更新。内部動作に関する記述を削減、実装サンプルを増やしてみた。(内部動作なんてソースを読めばすぐにわかる。) ドキュメントを書くには集中力が必要 まとまった長い時間がないときちんと用意できない もしも長い時間…

Moony 0.6.1リリース

ダウンロードはSourceForge.jpからどうぞ。 変更点は以下の通りです: ライセンスをPHPライセンスからBSDライセンスに変更 GETパラメータを正常に扱えなかったバグを修正 URLのrewriteによるアクション設定をQuery StringベースからPATH_INFOベースに変更 Moo…

BSDライセンスに変更

やっぱりBSDライセンスにしようと思います…。できるだけ敷居は下げておきたいので。 たびたび変更してややこしいことになってしまいましたが、下表のような感じです: バージョン ライセンス 0.5.2以前 BSDライセンス 0.5.3〜0.6.0 PHPライセンス 0.6.1以降 B…

Validation機能について・続き

Moony_Viewクラスの内部で持っているSmartyクラスのインスタンスを返すメソッドを用意してみた。これで強引にすればSmartyValidateの利用が可能になる。*1 class FooAction extends Moony_Action { function execute($context, $view) { $smarty = $view->ge…

Validation機能について

SmartyValidateをアクションクラスから使えるようにする仕組みを考えてみる。