ガバメントクラウドの最下に標準仕様書というものがあったので、個人的に355頁の実装を始めてみた。
・./imgs/
・./models/
・./succeeds/
・./supports/
のフォルダを作ってから、以下を実行すると、PHPのひな形を吐き出してくれる。
ViewクラスにHTMLのテンプレも書いてから吐き出せばもっと楽になるでしょう。
まあ問題はその後に必要になるデータベースなわけですが、そこは、upper、this、this_rayer、type、name、dataというものをとにかく構造化し続ける感じにしたいところ。テーブルが一つで済むので。
吐き出す$controller.phpが大きくなりすぎるので、それはまた異なるファイルを最後に手書きした。
<?php
//【住民記録システム】業務フロー1.1.7
$names = array("旧氏の管理_from_請求人_to_開始","旧氏の管理_from_開始_to_内容確認","旧氏の管理_from_内容確認_to_本人確認","旧氏の管理_from_本人確認_to_受理","旧氏の管理_from_受理_to_入力照合","旧氏の管理_from_入力照合_to_終了");
$controller_names = array();
$model=<<<ENDOFSOURCE
<?php
class Model{
function process($data){
return true;
}
}
?>
ENDOFSOURCE;
for($c=0;$c<count($names)-1;++$c){
// for($d=0;$d
ENDOFSOURCE;
file_put_contents("./succeeds/from_{$names[$c]}_to_{$names[$c+1]}.php",$view);
$view=<<<ENDOFSOURCE
<?php
class View{
function process($data){
print<<<ENDOFEHTML
support from_{$names[$c]}_to_{$names[$c+1]}
ENDOFEHTML;
return true;
}
}
?>
ENDOFSOURCE;
file_put_contents("./supports/from_{$names[$c]}_to_{$names[$c+1]}.php",$view);
$controller_names[] = "if(isset($_POST["from_{$names[$c]}_to_{$names[$c+1]}"])){
$controller = "from_{$names[$c]}_to_{$names[$c+1]}";
}";
//}
}
$controller_name = implode("else ",$controller_names);
$controller =<<<ENDOFSOURCE
process($data)){
require("./succeeds/{$controller}.php");
}else{
require("./supports/{$controller}.php");
}
$view = new View();
$view->process($data);
?>
ENDOFSOURCE;
file_put_contents("./controller.php",$controller);
?>
<?php
$controller = "";
$pattern = "/x{0000}|x{0001}|x{0002}|x{0003}|x{0004}|x{0005}|x{0006}|x{0007}|x{0008}|x{0009}|x{000A}|x{000B}|x{000C}|x{000D}|x{000E}|x{000F}";
$pattern.= "|x{0010}|x{0011}|x{0012}|x{0013}|x{0014}|x{0015}|x{0016}|x{0017}|x{0018}|x{0019}|x{001A}|x{001B}|x{001C}|x{001D}|x{001E}|x{001F}";
$pattern.= "/u";
if(isset($_POST)){
foreach($_POST as $key => $value){
if(preg_match("/^from_(.*?)_to_(.*?)$/",$key) && !preg_match($pattern,$key)){
$controller = $key;
}
}
}
if($controller==""){
$controller = "from_他のサイト_to_管理項目";
}
$data = array();
require("./models/{$controller}.php");
$model = new Model();
if($model->process($data)){
require("./succeeds/{$controller}.php");
}else{
require("./supports/{$controller}.php");
}
$view = new View();
$view->process($data);
?>