2006-03-01から1ヶ月間の記事一覧

validator実装案

Moony 0.10.0のvalidatorの実装について、シンプルに以下のような実装を考えている。 アクションクラスにvalidateメソッドが存在する場合、filterより後、executより前にメソッドが実行される。 validateメソッドは、引数として連想配列の参照を受け取る。こ…

validatorは必要か

大掛かりな仕組みとしてのvalidation機能は必要ないような気がしてきた。そもそもvalidationの機能としては3つあると思う: 入力値の検証を行うことができること できるだけ定型的な方法で機械的に検証できることが望ましい 検証エラーの場合に入力画面に戻る…

0.10.0のインジェクション

大体以下のようなインジェクションを考えている…。 例えば、アクションクラス'Foo'を実装するとする。アクションクラスは特定のクラスのサブクラスである必要はない。 class Foo { // リクエストパラメータのインジェクション var $name; var $name_kana; //…

もっとシンプルに

0.9.0で大きく構成が変わったMoonyですが、0.10.0(?)でまたもや大きく変わるかもしれません。もっと単純な構成/実装にできる部分が見えてきてしまっているので、その辺を改善したい。 とりあえず頭の中で考えているのは: DI変数インジェクションの部分的な…

0.9.0リリース

Moony 0.9.0をリリースしました。ダウンロードはSourceForge.jpからどうぞ。 主な変更点は以下のとおり: ディレクトリ構成の大幅な変更 validation機能の実装 filter機能の実装 Moony_Routerクラスの新規追加 Moony_Responseクラスの機能強化 「セッションID…

通常のテキスト出力

できるようにしてみる。アクションクラスでMoony_Response::outを実行すればOK。関数名を"output"と迷ったけれど、短く"out"にすることに。 実装例は以下のとおり: class FooAction extends Moony_Action { function execute($request, $response) { // 2番…

配列の値を取得する関数

ただし、該当するキーが存在しない場合は代替値を返す。Moony_Utilsに追加。 function getArrayValue($key, $array, $alt = null) { if (is_array($array) && isset($array[$key])) { return $array[$key]; } return $alt; }PHPの配列関数の引数のほとんどは…

Webアプリセキュリティ対策入門

PHP

大垣さんの本を買った。Webアプリのセキュリティ対策に関して体系立ててまとめられていて、かなりよい。実装サンプルはPHP。ただしPHP5が前提となるので、その点を考慮して読むこと。Webアプリセキュリティ対策入門 ~あなたのサイトは大丈夫?作者: 大垣靖男…

Camel Caseにする関数

Moony_Utilsに追加する。 function camelCase($str, $delim = '_') { if (strlen($delim) == 0) { return ucwords($str); } $words = explode($delim, $str); for ($i = 0; $i < count($words); $i++) { $words[$i] = ucfirst($words[$i]); } return implode…

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"とした方が格好いいんじゃないか…

テンプレートエンジン、Flat Frog

PHP

開発が中止になっていたSmarty-Lightだけど、後継プロダクトの開発が始まっている模様。名前はFlat Frogに変更されている。蛙?http://sourceforge.net/projects/flatfrog

0.9.0に向けて

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

開発者も(X)HTMLとCSSぐらい知っておけ

<frameset>タグと<table>タグのどちらでも,同じようにウインドウを区切れそうだ。しかし,今どきのWebページでは,<table>タグをメインに使い,補助的に<frameset>タグを使うのが多いようだ。 あまりにもひどい記事でどこからつっこめばいいものや…

文字列の"幅"を取得

PHP

mb_strwidth関数があるのだけれど、文字コードのマッピングの違いによって期待する値が返ってこないことがあるらしい(http://ns1.php.gr.jp/pipermail/php-users/2005-October/027806.html)。それも困るので、取得するための関数を作っておく。 function g…

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 …

OSC2006、行きます。

オープンソースカンファレンス2006に行ってみることにした。「Seasar.PHPプロダクトを使ったWebアプリ開発 Part.1、2」に参加予定。Maple、S2Container.PHP5、S2Dao.PHP5について。開催場所を調べたら、通っていた中学/高校のすぐ近くだったので吃驚した。

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 } } }メソッド名を何にするか考えたの…