アシアルブログ

アシアルの中の人が技術と想いのたけをつづるブログです

Piece Framework用スケルトン作成スクリプト

こんにちは、最近Piece FrameworkというPHPフレームワークを使いはじめた高橋です。

このフレームワークは、一連の処理の流れを管理する機構が盛り込まれていて、CSRF対策や同一登録画面の並行動作といった面倒な処理を、自分で記述することなく実現することができるので、とっても便利です。

そんなPiece Frameworkを使って何か新しく画面を作成する場合、
 ・エントリーファイル
 ・アクションファイル
 ・フロー定義ファイル
 ・バリデーション定義ファイル
 ・テンプレートファイル
といったファイルを作成することになるのですが、おっちょこちょいな私は、各ファイルの作成忘れやフロー名のタイプミスなどで、エラー画面を見ることも多かったりします。
そのうち自動で各ファイルを生成してくれるツールが提供されるものと思ってはいるのですが、それまでの繋ぎとして、雛形となるファイルを各ディレクトリへコピーするスクリプトを作ってみました。

 piece-gen-20070531.tar.gz

使い方ですが、まず、ダウンロードしたファイルを好きな場所に展開します。今回は「/var/www/」へ展開することにします。



$ cd /var/www/
$ tar xvzf piece-gen-20070531.tar.gz


すると、下記のディレクトリとファイルが作成されます。



piece-gen/
piece-gen/piece-gen.php
piece-gen/skel
piece-gen/skel/htdocs
piece-gen/skel/htdocs/flowname.php
piece-gen/skel/webapp
piece-gen/skel/webapp/actions
piece-gen/skel/webapp/actions/FlowNameAction.php
piece-gen/skel/webapp/config
piece-gen/skel/webapp/config/flows
piece-gen/skel/webapp/config/flows/FlowName.yaml
piece-gen/skel/webapp/config/validations
piece-gen/skel/webapp/config/validations/ValidationName.yaml
piece-gen/skel/webapp/templates
piece-gen/skel/webapp/templates/FlowName
piece-gen/skel/webapp/templates/FlowName/Form.html
piece-gen/skel/webapp/templates/FlowName/Finish.html
piece-gen/skel/webapp/templates/FlowName/Confirmation.html


次に「piece-gen.php」内に記述されているスケルトディレクトリとAUTHORの値を適宜書き換えます。



// スケルトンファイルのディレクトリ
$CONFIG['skel_dir'] = "/var/www/piece-gen/skel"; ← 展開したskelディレクトリの場所を指定

// 置換するキーワード
$CONFIG['keywords'] = array(
    "FLOW_NAME" => $flow_name,
    "AUTHOR"    => "Asial Corporation <info@asial.co.jp>" ← 作成者
);


それにしても、自分で言うのもなんですが、やっつけ感溢れる汚いソースコードですね(^^;
オブジェクト指向で書かれたPiece Frameworkの綺麗なソースコードとは大違いです。
もともと自分用に作った使い捨てスクリプトですので、お見苦しい点はご容赦ください。

あとは
 ・piece-gen/skel/htdocs/flowname.php
 ・piece-gen/skel/webapp/actions/FlowNameAction.php
 ・piece-gen/skel/webapp/config/flows/FlowName.yaml
 ・piece-gen/skel/webapp/config/validations/ValidationName.yaml
 ・piece-gen/skel/webapp/templates/FlowName/*.html
の各ファイルを、雛形としてよく使用するファイルの内容に書き換えます。その際、「%%FLOW_NAME%%」や「%%AUTHOR%%」を置換したい箇所に記述しておきます。

では、これで準備が終わりましたので、実際に動かしてみましょう。開発するアプリケーションの構成が



/var/www/piece/examples/htdocs
/var/www/piece/examples/webapp


となっている場合、examplesディレクトリへ移動して、piece-gen.phpを実行します。
引数はそれぞれフロー名とバリデーション名になり、もしバリデーション定義ファイルが不要な場合は、バリデーション名の引数は省略可能です。



$ cd /var/www/piece/examples/
$ /var/www/piece-gen/piece-gen.php TestSample ValidationSample


実行が完了すると、



/var/www/piece-gen/skel/htdocs/flowname.php -> /var/www/piece/example/htdocs/testsample.php
/var/www/piece-gen/skel/webapp/actions/FlowNameAction.php -> /var/www/piece/example/webapp/actions/TestSampleAction.php
/var/www/piece-gen/skel/webapp/config/flows/FlowName.yaml -> /var/www/piece/example/webapp/config/flows/TestSample.yaml
/var/www/piece-gen/skel/webapp/config/validations/ValidationName.yaml -> /var/www/piece/example/webapp/config/validations/ValidationSample.yaml
/var/www/piece-gen/skel/webapp/templates/FlowName/Confirmation.html -> /var/www/piece/example/webapp/templates/TestSample/Confirmation.html
/var/www/piece-gen/skel/webapp/templates/FlowName/Finish.html -> /var/www/piece/example/webapp/templates/TestSample/Finish.html
/var/www/piece-gen/skel/webapp/templates/FlowName/Form.html -> /var/www/piece/example/webapp/templates/TestSample/Form.html

piece-unity-config.yaml:
        - name: TestSample
          file: ../webapp/config/flows/TestSample.yaml
          isExclusive: false


のように画面に表示され、雛形のファイルがexamplesの各ディレクトリへコピーされます。
あとは、表示された最後の三行を「piece-unity-config.yaml」内flowDefinitionsのvalueへ追加してください。

以上、私以外こんなへっぽこなスクリプトを使う人がいるとも思えませんが、どうぞご自由にお使いくださいませ。