0.10.x

Flash変数の仕組みを実装してみる

急遽Flash変数の仕組みを実装することにしましたよ。Ruby on Railsやその影響を受けたフレームワーク(Biscuitとか)を見ていると便利そうなので。 新規クラス追加: Moony_Flash アクションクラスの'flash'という名称のインスタンス変数にインジェクションさ…

validationの簡略化

思いっきり簡略化することにした。アクションクラスにvalidateメソッドを作って、引数としてMoony_Validatorのインスタンスを受け取るところまでは同じ。ただし、validateメソッドはbool値を戻す必要がなくなる。Moony_Validatorに検証パターンを登録して、…

Escaping Output

Symfony 0.6.2でEscaping Outputの機能が実装されたようですが、設定をきちんと行わなくてはならない模様。それは面倒な気がする…。 Moonyを使用する場合、テンプレートに値を設定する場合は通常Moony_Responseクラスのsetメソッドを使います。3番目の引数が…

validateメソッド

アクションクラスのvalidateメソッド 引数としてMoony_Validatorのインスタンスが渡される 一通りの検証用メソッドを持っている 検証用メソッドを実行することでエラーメッセージ設定可能 エラー時には前回画面表示時に使用したテンプレートが使用される 変…

Moony_DB

Moony_DBは同梱し続けることに決定。 PEAR::DBのラッパークラス queryメソッドで検索が可能、結果は連想配列の配列 executeメソッドで更新が可能、結果は影響を与えたレコード件数 勿論、これもインジェクションすることが可能。 [Injections] db=Moony_DB上…

Moony_Requestの実装方式

リクエストパラメータの取り扱い、最終決定。 結局0.9.xまでと同じようにgetメソッド経由でアクセスするようにしましたよ。その方が何かと便利なので…ということで元の実装に回帰。ただし、Moony_Requestのインスタンスはメソッドの引数としてではなくアクシ…

Smartyを直接操作

Smartyを使用する場合は、細かいことを使用としたらSmartyの設定ができないと困ることになります。現状ではよく使うであろう設定をmaple.inc.ini内で定数として保持しています。が、これだと準備された設定しかできないことになります。 Mapleに限らず、Smar…

アクションごとのインジェクション

アクションごとにインジェクションしたい場合は、アクションクラスを配置したディレクトリのmoony.iniにインジェクション定義を全部書いておいて、必要なものだけアクションのインスタンス変数とすればOK。 たとえば、moony.iniが以下のようになっていて、 […

インジェクション設定ファイル

diconファイルほど大げさではないんだけれども、インジェクションの設定をiniファイルで定義できるようにしようと思う。Moony.phpと同じ階層にあるmoony.iniがまずベースとしてロードされて、それをアクションクラスを配置するディレクトリのmoony.iniが上書…

リクエストパラメータの扱い

アクションクラスのインスタンス変数にリクエストパラメータをインジェクションしようと思ってたけど、そうするとリクエストパラメータの数が多いときに非常にわかりづらく/見づらくなる。どうしたものか。Moony_Requestクラスはやっぱり必要だろうか…。std…

XMLなどを出力する方法

テンプレート描画を無効にして、echoやprintを使って文字列を出力すればプレーンなテキストが出力可能。Content-Typeがtext/plainの場合はヘッダ出力を省略可能(デフォルトで出力)。エンコーディングは必要に応じて変換すること。 class Foo { var $templa…

テンプレート描画を無効にする方法(2)

やっぱりもっと簡潔に、インジェクションされたテンプレートファイル名にNULLを設定すればテンプレートのレンダリングを行わないようにする。その方がわかりやすい、と思う…。 class Foo { var $template; // to be injected function execute() { $this->te…

テンプレート描画を無効にする方法

Moony 0.10.xではSmartyを用いたテンプレートのレンダリングを無効にするためのメソッド、Moony_Helper::disableRenderingを提供予定。下記のように実装することでexecuteメソッド終了後のテンプレート描画が抑制できる。 class Foo { var $helper; // to be…

外部ライブラリとか自作ライブラリとか

Moony 0.10.xでは以下のクラスが廃止される。 Moony_DB (PEAR::DBのラッパー) Moony_Uploader (ファイルアップロード用クラス) その他のクラスに関しては、他のクラスと統合するなどして機能自体は存続する予定。 上記2クラスをどうして廃止するかというと、…

PATH_INFOの取得方法

PATH_IFNOの取得方法も変更しようと思う。例えば、URLが/index.php/foo/bar/param1/param2の場合: Moony 0.9.x Moony_Request::getPathInfo($index)で取得 class FooBarAction extends Moony_Action { function execute($request, $response) { $p1 = $reque…

Ejection

Injectionの対義語は、Ejectionでいいのかな? つまり、何かを注入するのではなくて抽出するといったような意味。注入できる依存性/変数があるのなら、抽出できる(抜き出すことができる)依存性/変数もあるということ。密結合になると言えばそうだけど、…

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変数インジェクションの部分的な…