*

UNICORN FlowXMLについて

   

弊社の@saimushiさんがOSSで開発しているUNICORN フレームワークの大きな特徴の一つ、FlowXMLについてご紹介&解説します。

FlowXMLとは?

PHPのFrameworkなので、PHPでゴリゴリ実装していく事を想像しますが、UNICORNの場合はXMLに処理を記述していく事により、一連の処理の流れ(Flow)をXMLファイル1つに定義する事が出来ます。
また定義したフローをUNICORNがPHPに変換したものを自動的に作成(autogenerate)してくれます。
Xcodeの様にGUIでPHPのプログラムを作る日も、そう遠くは無さそうですね!!

XMLで記述していく事に少なからず抵抗がある方もいるかも知れませんが、必要最低限の処理をFlowXMLで記述する事によりUNICORN側で自動的にその他の処理も追加した状態でPHPに変換してくれるので、慣れるとこちらの方が早く感じる事でしょう。
もちろんPHPのFrameworkなので、直接PHPファイルを作成して処理を記述する事も出来ます。

今回はそのFlowXMLで使用出来る各タグについて解説していきます。

FlowXMLで使える主なタグについて

tag
FlowXMLで使用出来るタグは実に様々です。
下記のタグを理解する事で、より素早く処理を記述する事が出来ます。

section
id
sectionを一意に識別するための値です。
autogenerateされたPHPのクラス名に該当します。

例)Helloというsectionを宣言します。

prepend
executeが実行される前に実行したい処理はprepend内に記述します。

例)prependの処理が終了した後にexecuteの処理を実行します。

execute
処理を実行します。主な処理はsection配下に記述したexecute内に実装します。
特定のクラスやメソッドの実行にも使用可能です。

val
 実行する処理を宣言します。
class
 実行するクラス名を宣言します。
method
 実行するメソッド名を宣言します。

例)文字列"hoge"をechoする

append
executeが実行された後に実行したい処理はappend内に記述する

例)

flow
“次の処理””を明示します。

section
 sectionid、又はbackflowを指定します。
 backflowとは、現在のsectionの一つ前のsectionに関する処理を表します。
 例えばflowsectionbackflowを指定する事で、前回の処理を手軽に復帰させる事が出来ます。
redirect
 指定されたsectionへリダイレクトさせるかを宣言します。
 true又はfalseを指定します。
flowpostformsection
 HTMLformタグに指定したsectionを遷移先として指定し、formの入力値を引き渡す場合に宣言します。

例)

assign

var
 値を代入する変数名を宣言します。
val
 varで宣言された変数に代入する値を指定します。
class
 実行するクラス名を宣言します。
method
 実行するメソッド名を宣言します。
arg+(number)
 メソッドの引数を指定します。arg1arg2の様に複数指定する事が出来ます。

例)Hogeクラスのtestメソッドに文字列"foo"を引数として渡し、結果を変数$barに格納します。

rest
UNICORNの機能であるautorestを利用してDBSQLを発行します。

assign
 実行結果を代入する変数名を宣言します。
execute
 authAndExecute又はexecuteを指定します。
resource
 DBのテーブルを指定します。
method
 GET・POST・PUT・DELETEの何れかを指定します。
 それぞれSELECT・INSERT・UPDATE・DELETEに該当します。
params
 その他の条件やSQLを指定します。
 JOIN ORDER OFFSET LIMIT GROUP BY句もここで指定します。
 json形式で指定します。

例)fooテーブルの一覧をidの降順で20件取得し、結果をbarという変数に代入します。

if, elseif, else
PHPif文と同様に条件分岐を行います。

var
 比較結果を宣言します。
val
 比較内容を宣言します。

例)条件分岐により変数$hogeに数値を代入し、結果をechoします。

foreach
eachas
 ループさせる変数名を指定します。
 キーは「変数名+key」、値は「変数名+val」で表します。

例)配列$hogeをループさせ、そのキーと値をechoします。

view
※省略可
現在のsection上で表示するhtmlファイルの指定やhtmlformの値の受け渡しについて指定する事が出来ます。
省略した場合、現在のsectionidと同名のhtmlファイルがデフォルト値となります。

section
 sectionidを指定します。
flowpostformsection
 htmlformに入力された値の引き渡し先となるsectionidを指定します。
confirmflowpostformsection
 flowpostformsectionにより渡された値の更に引き渡し先となるsectionidを指定します。
backflowpostformsection
 htmlformに入力された値の復帰先となるsectionidを指定します。
sslrequired
 HTTPSプロトコルを適用するかを明示的に指定します。
 true又はfalseを指定します。

例)
Hello-onesectionHello-twoを、formのリクエスト先としてHTMLを描画します。
Hello-twoHello-oneからリクエストされた値を受取り、確認用のHTMLを描画します。戻り先をsectionHello-oneとしています。渡し先をsectionHello-threeとしています。
Hello-threesectionHelloで使用しているHTMLファイルを描画します。

flowviewparam
viewで描画されるHTMLに値を渡す事が出来ます。

selector
 HTMLid, class属性の値を指定します。指定方法はCSSと同じです。
val
 selectorに代入する値を指定します。

例)hello.htmlの

"というタグに"bar"という文字列を埋め込みます。

cancelthisbackflow
backflow処理をキャンセルします。

clearbackflow
backflowに設定されている値をクリアします。

flowpostformsectionerror
htmlflowpostformsectionerrorという属性を宣言した箇所に文字列を埋め込みます。

例)html"Error"という文字列をエラーメッセージとして渡します。

exception
Exceptionを宣言し、処理を終了します。

例)

以上がUNICORNFlowXMLで使える主なxmlタグの一覧になります。
これらのタグとHTMLJavaScriptを用いて非常にスピーディーにUNICORNによる開発を行う事が可能です。

Author Profile

atarun
株式会社デジタルクエスト 開発部 エンジニア
サーバーサイドのエンジニア
社内では若手の部類のエンジニア
アイコン画像は「くちびるまん」と言うオリジナルキャラクターです
Latest entries
  • このエントリーをはてなブックマークに追加


  関連記事

digitalquest_icon
UNICORN & PHOENIX の紹介

デジタルクエストで取り組んでいる技術の紹介です。 弊社のエースエンジニア @sa …

amazon_icon
【速報】PHP7をAmazon Linuxに早速入れてみて、5.6とのベンチマークを取ってみた。

PHP7が11年ぶりに正式リリースされたそうなので、早速試してみたです速報。 試 …