フレームワークを導入しようと思ったメモ(Ethna)

いまさらだけど

今までは、古いPHPプログラマーズマガジンで見た(2004/6号の「イベント駆動型PHPプログラミング」)イベントディスパッチャ改と自作O/Rマッパ改と鮎川さんのhtmltemplate改を使っていたが、そろそろ(おせーよ)行き詰まりを感じていたのと、次の案件が時間的に余裕があるっぽいのでちゃんとフレームワークを使用して開発してみることにする。


さらに言うと、特にコントローラ部をクラス内の関数名に振り分けるくらいにしか使ってなかったんで、VとCを同じプログラムに記述する形になっていて、ほぼ一人で作っている程度でも段々とプログラム一つづつが肥大化していっていい加減嫌になった。
まぁ開発の後半になると毎回思ってたんだけど。


あとは若者に手伝わせる時にはやっぱりある程度の標準的な手法でやらせたほうが良いよなぁと思ったんで。
つーか
ここら辺のPHPでのWeb開発の遍歴(<?php echo "ほげほげ"?>...あたりからテンプレートを使うようになって、コントローラ風のを使って、とかの進化?)をまとめておくと人にフレームワークを使わせる動機付けに良いかも。


と言うわけで

Ethna始めてみました

感想
  • ActionFormは激しく便利そう

ここら辺を上手いこと自動生成できたり手軽にコマンドで作れると良いのかな

  'sample' => array(
             // フォームの定義
             'type'          => VAR_TYPE_INT,    // 入力値型
             'form_type'     => FORM_TYPE_TEXT,  // フォーム型
             'name'          => 'サンプル',      // 表示名

             // バリデータ(記述順にバリデータが実行されます)
             'required'      => true,            // 必須オプション(true/false)
             'min'           => null,            // 最小値
             'max'           => null,            // 最大値
             'regexp'        => null,            // 文字種指定(正規表現)

             // フィルタ
             'filter'        => null,
  )

をちまちま買いて行くのは面倒だからtextに1form1行でリスト形式に書いたのを食わせると自動的にActionFormのarrayに整形するのを作ってみたけど・・・激しく無駄ぽい気もしないでも無いな。


こう言うのをWebのフォームから追加削除とか色々出来てさらにDBのテーブル構造とも自動的に結びついてとか出来るとRoRとかdjangoぽくなるのかな?知らんけど。

超・極める! PHPを見るとhalt氏は逆にHaste_SmartyPluginsと言うので逆にActionFormから画面を作る手法を取ってる?
Smarty自体が不慣れだ。

  • AppObjectがイマイチ分からん

PEAR::DB前提ぽい?
DBクラスをADOdbに変えたら動かなかった。
importForm()なんかは面白そうだけど、今回はFormとTableが一対一になるようなシーンは少なそうなのと、どうせ複雑な処理を生SQLで書く時にPEAR::DBよりはADOdbあたり使った方が楽そうだから特に使わなくて良いかな・・・ちょっとApp*周りはサンプルが足りない感じ?*1

  • とっかかりやすさとしては

ドキュメントはある程度揃ってる。
やっぱり応用例が物足りない気もするけど、我が身を振り返れば充分頑張ってる気もする。


ある程度分かってる人はこう言う処理はフレームワークを通さずに生で(あるいはXXXを使用して)書いてた時はこうだった、じゃEthna流だとどうやるんだ?
ってパターン例を欲してると思うんだけど、そうすると程よく尖ったサンプルをひたすら増やすしか無いのかな。

ユーザ毎の特定処理の投稿コーナーとかあると便利なのかも。
MLの過去ログでのやり取り見てもファイルは無くなってたりするし。

その他

サイト内にメーリングリスト検索窓があれば良いと思った。
まぁGoogleでサイト指定検索すれば済むんだけど。


Ethnaの流儀として、ActionやViewにはなるたけ処理を書かないでAppManagerにまとめるべしってのを良く見かけたが、サンプル無しだとAppManager内でDB呼び出すのもイマイチ面倒だった、と言うか結局クラス構造を完全に理解してないと乗りこなせない感はどうしてもある。
つーか自分がチュートリアル一通り読んだだけだと良く分からずに(無理やり書けばなんとでもなるだろうけど)2chのスレとメーリングリスト一通りを読んだけどまだあやふやだな・・・


さすがに、テンプレートエンジンとO/Rマッパーも馴染んだものと違うと色々とストレスが溜まる。
あとはひたすら作っちゃ壊しをするしか無いな。


そもそも、先に色々情報を入れるよりは手を動かした方が良い、ってのは過去に散々味わってるのに中々不精は直らないもんですな。
大学一年の数学でいきなり躓いて、結局四年でゼミに入って無理矢理輪読用にひたすら手を動かしててやっと理解できたんだよな。

*1:開発指針になりそうなコメントhttp://ethna.jp/pipermail/users/2005-April/000028.html