S2Container+S2Dao.PHP5を使ってみる(その1)
自分の備忘録+まわりの数人の為に、s2.phpを使用した経過を記していきます。
例題っぽい感じで適当なモジュールを作ろうと思うのですが、取りあえず、うちの現在の状況から言って、簡単なログイン画面でも作ってみるのが良いかと思います。
goyaに沿って、画面一つ毎に対応するaction、dto、service、dxoがあり、dbのテーブル一つ毎にentity、daoがある、という形にしたいと思います。必要に応じてlogicやinterceptor等を用意します。service、dxo、logicは全てインターフェースと実装を分けます。
とりあえず、S2Container/S2Dao.PHP5/S2Base.PHP5をさくっとインストールします。S2Baseを使うことで、予めテーブルが出来ていればdaoとentityが自動生成できてしまいます。また、コマンド一発でactionやserviceなどの雛型が出来上がってしまうようなので非常に便利そうです。Smartyを拾ってきて、with Smartyで使います。
ただし、S2Base.PHP5をそのまま使うと、dto、dxoのファイルやディレクトリは出来ないようなので、そこはちょこっと改造して、dtoやdxoなども生成されるようにしておきます。また、S2Base.PHP5のgoyaコマンドではserviceがentityに対応して出来る(entityと同じ名前のserviceが出来る)のですが、action+serviceまでを同じ画面名に対応して作りたいので、それも手を加えておきます。goyaコマンドでは、service名と主に利用するdaoの名前を入力するようにして、serviceからdxoとそのdaoを利用するようにdiconファイルやservice、serviceImpl、dxo、dxoImplを生成するようにしておきます。
と、いうわけで早速やっていきます。
まずS2Baseのフォルダをコピーして、LoginSampleという名前にします。そのフォルダの中で作業していきます。S2Baseはモジュール毎に作っていくので、まずはmoduleコマンドでモジュールを生成します。今回はLoginという名前にしてみます。
ちなみにDOS窓でコマンド入力するのですが、普通のDOS窓は非常に貧弱な機能しかないのでストレスが溜まりまくりです。NYACUSがかなり便利なので個人的にはこれを使ってます。
LoginSampleのフォルダから、
phing→3: moduleを選択→moduke nameを"Login"→confirmで"y"
これだけです。
app\modules\Loginのフォルダと、その中にaction、dao、dicon、dto、dxo、entity、logic、viewのフォルダが出来ました。
app\modules\Login.inc.php
がモジュール毎の設定になっているのですが、その中でinclude_pathの追加をしています。dto、dxoなどは見に行かない設定なってるので、
$pwd . '/dto', $pwd . '/dxo', $pwd . '/logic',
などと追加してしまいます。
ついでに、
LoginSample\app\commons\dicon\auto.dicon
がクラスのautoloadに使われているみたいです。ここにdxoとか書いておかないとDIコンテナ生成時にdxo等を設定ファイルに書いてあると怒られてしまいます。ServiceやDaoのの部分に倣って、
<initMethod name="addClassPattern"> <arg>"%S2BASE_PHP5_ROOT%/app/modules/@@MODULE_NAME@@/dxo"</arg> <arg>".+DxoImpl"</arg> </initMethod> <initMethod name="addClassPattern"> <arg>"%S2BASE_PHP5_ROOT%/app/modules/@@MODULE_NAME@@/logic"</arg> <arg>".+LogicImpl"</arg> </initMethod> <initMethod name="addClassPattern"> <arg>"%S2BASE_PHP5_ROOT%/app/modules/@@MODULE_NAME@@/dto"</arg> <arg>".+Dto"</arg> </initMethod>
と追加してしまいます。どうやらこれで大丈夫みたいです。
続く...