moony
今悩んでるのは、validationをexecuteメソッド内でどう書けるようにするのがわかりやすいかということ。設定ファイルとか使いたくないし。 validate( $this->name, 'required', '名前は必ず入力してください'); if ($this->error()) { $this->output($this->…
URLで渡された(PATH_INFO)パラメータは、素直にexecuteメソッドの引数として受け取れるようにした。
んー、assignメソッドとかいらない気がしてきた。どうせ連想配列に入れるんだし。 stash['bar'] = 'baz'; // $this->assign('bar', 'baz'); 今まで $this->render(); } } あ、stashっていう変数名はCatalystから拝借。
Google Codeのwikiにちょっとずつ書いていくことにする。 http://code.google.com/p/moony/
新版Moonyのはじめかた(localhostで開発する場合)。 http://code.google.com/p/moony/ からコードをチェックアウト ApacheのDocumentRootにindex.phpを作成 actionDir = 'actions'; $moony->templateDir = 'templates'; $moony->start(); actions、templat…
プログラミングも表現の一形態であるならば、色々な書き方ができることが重要なのかな、と。道具としての効率性、という面だけから考えると、皆が同じツールで、同じ書き方、できるだけ再利用して作る、というのがよいように思えるけれど、逆に多様性を重視…
テンプレートで文字を出力する用。
Moonyのリポジトリとかプロジェクトページとか、Google Codeに移行しようかなと思ってます。とりあえず試用中…。http://code.google.com/p/moony/
Moony 0.16.xをフルスクラッチで開発してます。基本的な機能とか流れは変わらないのですが、新たにプラグイン機構を実装してみました。基本的な流れとしては: 使うプラグインを明示 実行予定のアクションクラスにプラグインのクラスをMix-in(ぽく) 新しくM…
Moonyどうしよう: PHP5ベースに移行? 実装とかすごく楽になるね Exceptionとか使いたいし __callとかのマジックメソッドも使いたい 今借りてるレンタルサーバがPHP4 orz 作っても使えないんじゃ仕方ない やっぱりPHP4ベースかなぁ… ← 今ココ
実はフレームワークにとって一番重要なのは、プラグインでどこまで拡張できるかというところなのではないかという気がする。例えば: jQuery Ruby on Rails Catalyst Plagger symfony CakePHP みんなプラグイン機構を持っていて、それを利用してユーザがどん…
Moonyどうしよう、と最近ずっと悶々としているわけですが、とりあえずモジュール単位で個々に使えるような感じにしていこうかな、と思います。適度に疎結合に。そして多分、核になるのが以下のモジュール群: Moony_Renderer_* Moony_Request Moony_Router Mo…
フレームワークに依存した開発に疑問を持つ そもそも不自由 フルスタックってどうよ Zend Frameworkに目が行く フレームワークをパーツ化したもの Ruby on Railsとは発想が違う 案外いいんじゃないか… さて、Moonyどうしよう ← 今ココ
Moonyの開発を再始動するにあたって、気になるのはPHP4のサポート終了。でも借りてるレンタルサーバがPHP4しか現状で使えないので、PHP4を捨てるわけにもいかない。CakePHP方式でできるだけハイブリッドにしてがんばろうかな。
停滞気味のMoonyの開発ですが、再始動します。改めて実装目標: REST(っぽいURL)の実現が可能なルーティング機能 テンプレート機能 リクエストパラメータが手軽に扱えること セッションが手軽に扱えること validation機能が揃っていること セキュリティの考…
Moony 0.10.4をリリースしました。1件のバグ修正を含みます。ダウンロードはSourceForge.jpからどうぞ。変更メモ: /fooにアクセスがあり、Fooテンプレートがない場合のリダイレクトを取り止め(バグ修正、実装再検討) エラー発生時に出力バッファをクリアす…
Moony 0.10.3をリリースしました。ダウンロードはSourceForge.jpからどうぞ。変更メモ: 設定iniファイルの指定方法変更(Moony::setConfigFile) Moony_Filterのメソッド名変更(Moony_Filter::toHiragana、Moony_Filter::toKatakana) /fooにアクセスがあり…
class Foo { var $request; function execute() { // nameの値を取得(1) $name = $this->request->get('name'); // nameの値を取得(2) $obj = $this->request->toObject(); $name = $obj->name; } }リクエストパラメータを一つのオブジェクトにまとめられる…
どう扱うか。現状(0.10.2)では、インスタンスの生成と動作設定をMoony内部で行っている。そうではなく、動作設定済みのインスタンスをMoony起動時に渡してもらうのはどうか。フロントコントローラの実装量は増えるけど、より"薄い"フレームワークになるか…
スカラー値/配列/連想配列/オブジェクト対応。同等のメソッドをMoony_Responseに実装。 function escape($var) { if (is_object($var)) { $vars = get_object_vars($var); foreach ($vars as $name => $value) { $var->$name = escape($value); } return $va…
テンプレートに値を設定する場合、自動的に値がエスケープされる条件を変更する予定。 Moony_Response::set($name, $value, $escape = true) 現行バージョン(0.10.2) $valueがスカラー値の場合: エスケープされる $valueが配列/連想配列の場合: エスケープ…
次期バージョンでアクションチェーンに対応しますよ。 アクション内で次のアクションを指定する方式 Moony_Response::setAction($next_action)を実行 リクエストパラメータは次のアクションにそのまま引き継がれる テンプレートに設定した値も次のアクション…
Moonyのバージョン番号をどうやって採番すべきか まだメジャーバージョンには早いかな(なんとなく) 大き目の機能変更があった場合、マイナーバージョンを上げている そろそろメジャーバージョンを上げてもいいのかな。でもそうすると後方互換性とかいろい…
何度もころころ変わってゴメンナサイ ;-)Moonyの次期バージョンでキャッシュの仕組みを導入します。とりあえず、設定ファイル(iniファイル)のパース結果をキャッシュすることに。Moony_Cacheクラスを新規追加します。 クラス: Moony_Cache staticメソッド:…
Moony 0.10.2をリリースしました。トランザクショントークンの扱いに関するバグ修正を含みます。また、validationの実装方式が大きく変更になっていますのでご注意ください。ダウンロードはSourceForge.jpからどうぞ。変更メモ: トランザクショントークンがv…
途中までMoony_Cacheクラスを作ってたんだけど、やっぱりいらないような気がしてやめた。そんなわけで、Moony自身でキャッシュ機能を持つことは当分ありません。キャッシュならSmartyのキャッシュで十分。
作りながら考えてみると、キャッシュの仕組みを必要とする場面ってあまりない。例えば、JSONやXMLのパース結果はキャッシュする価値があると思う。でも、インスタンスの生成やiniファイルの読み込みに関してはPHPは十分高速だし、Moonyではそれぐらいしか扱…
キャッシュ機能を実装してみようかと思う。まだ実装とか何も決まってないけど。 クラス: Moony_Cache キャッシュ対象: Moonyの内部クラスのインスタンス? アクションクラスのインスタンス? 実装方法: 全てのキャッシュを連想配列として1つのファイルに保持…
0.10.1から明示的に指定しなければならないように変更された ブラウザの戻るボタンなどが使用された場合、セッション内の前画面情報とブラウザ上の前画面が一致しなくなってしまい、validation機構が正常に動作しなくなってしまうため(0.10.0までのバグ) …
0.10.1から微妙に変更になった部分。 規約で決められたテンプレートファイルを使用する場合 設定の必要なし(フレームワーク側で既定値として設定) アクション名と同一名称のテンプレートファイルが使用される 規約と異なるテンプレートファイルを使用する…