moony

validationをどう書けるようにするか

今悩んでるのは、validationをexecuteメソッド内でどう書けるようにするのがわかりやすいかということ。設定ファイルとか使いたくないし。 validate( $this->name, 'required', '名前は必ず入力してください'); if ($this->error()) { $this->output($this->…

URLで渡されたパラメータを受け取る

URLで渡された(PATH_INFO)パラメータは、素直にexecuteメソッドの引数として受け取れるようにした。

assignメソッドいらないかも

んー、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…

自分だけの車輪を作る

プログラミングも表現の一形態であるならば、色々な書き方ができることが重要なのかな、と。道具としての効率性、という面だけから考えると、皆が同じツールで、同じ書き方、できるだけ再利用して作る、というのがよいように思えるけれど、逆に多様性を重視…

viewヘルパー関数とか作らないと

テンプレートで文字を出力する用。

Google Codeに移行しようかな

Moonyのリポジトリとかプロジェクトページとか、Google Codeに移行しようかなと思ってます。とりあえず試用中…。http://code.google.com/p/moony/

プラグイン機構の導入

Moony 0.16.xをフルスクラッチで開発してます。基本的な機能とか流れは変わらないのですが、新たにプラグイン機構を実装してみました。基本的な流れとしては: 使うプラグインを明示 実行予定のアクションクラスにプラグインのクラスをMix-in(ぽく) 新しくM…

MoonyをPHP5ベースにするか否か

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/5

Moonyの開発を再始動するにあたって、気になるのはPHP4のサポート終了。でも借りてるレンタルサーバがPHP4しか現状で使えないので、PHP4を捨てるわけにもいかない。CakePHP方式でできるだけハイブリッドにしてがんばろうかな。

再始動

停滞気味のMoonyの開発ですが、再始動します。改めて実装目標: REST(っぽいURL)の実現が可能なルーティング機能 テンプレート機能 リクエストパラメータが手軽に扱えること セッションが手軽に扱えること validation機能が揃っていること セキュリティの考…

Moony 0.10.4リリース

Moony 0.10.4をリリースしました。1件のバグ修正を含みます。ダウンロードはSourceForge.jpからどうぞ。変更メモ: /fooにアクセスがあり、Fooテンプレートがない場合のリダイレクトを取り止め(バグ修正、実装再検討) エラー発生時に出力バッファをクリアす…

Moony 0.10.3リリース

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; } }リクエストパラメータを一つのオブジェクトにまとめられる…

Smartyの扱い

どう扱うか。現状(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リリース

Moony 0.10.2をリリースしました。トランザクショントークンの扱いに関するバグ修正を含みます。また、validationの実装方式が大きく変更になっていますのでご注意ください。ダウンロードはSourceForge.jpからどうぞ。変更メモ: トランザクショントークンがv…

キャッシュ実装、やめた。

途中までMoony_Cacheクラスを作ってたんだけど、やっぱりいらないような気がしてやめた。そんなわけで、Moony自身でキャッシュ機能を持つことは当分ありません。キャッシュならSmartyのキャッシュで十分。

キャッシュ実装は必要か?

作りながら考えてみると、キャッシュの仕組みを必要とする場面ってあまりない。例えば、JSONやXMLのパース結果はキャッシュする価値があると思う。でも、インスタンスの生成やiniファイルの読み込みに関してはPHPは十分高速だし、Moonyではそれぐらいしか扱…

キャッシュの実装

キャッシュ機能を実装してみようかと思う。まだ実装とか何も決まってないけど。 クラス: Moony_Cache キャッシュ対象: Moonyの内部クラスのインスタンス? アクションクラスのインスタンス? 実装方法: 全てのキャッシュを連想配列として1つのファイルに保持…

validationエラー時に使用するテンプレートファイルの設定方法

0.10.1から明示的に指定しなければならないように変更された ブラウザの戻るボタンなどが使用された場合、セッション内の前画面情報とブラウザ上の前画面が一致しなくなってしまい、validation機構が正常に動作しなくなってしまうため(0.10.0までのバグ) …

使用するテンプレートファイルの設定方法

0.10.1から微妙に変更になった部分。 規約で決められたテンプレートファイルを使用する場合 設定の必要なし(フレームワーク側で既定値として設定) アクション名と同一名称のテンプレートファイルが使用される 規約と異なるテンプレートファイルを使用する…