昨日書いた、仕様書をCSVで書き出し、雛形ファイルを用意すると、仕様書の内容をいれて、プログラムが自動生成するという話。
今回は、その仕様書の形式とか。。の話
もう一度、手順を書くとこんなかんじ。
■■ 手順的にはこんなかんじ
・仕様書をCSV書き出ししたものと、
・雛形を用意して、
↓
・このPHPを実行すると、
↓
・ブラウザ上に、雛形の指定したところへ、仕様書の値を入れて
ソースを書き出す。
前のブログは、雛形ファイルの書き方だったので、今回は、「仕様書をCSV書き出したもの」について
■■ 仕様書の形式
仕様書の形は、昨日の例に示したような、(CSVっていってるけど、本当は)タブ区切りのテキストです。いちおう昨日の例をしめしておくとこんなかんじ。
テーブル名 HELLO_WORLD_TABLE PRIMARY KEY NO 名前 型 桁数(文字のとき) NOT NULL NO INTEGER NOT NULL LANGUAGE VARCHAR 50 MESSAGE VARCHAR 100 |
上のほうに、繰り返しとは関係ない項目をかき、
(例の場合は、テーブル名とプライマリーキー)
見出しをいれて、
(名前 型 桁数(文字のとき) NOT NULLの行)
あとは、繰り返し部分をかきます。
繰り返しのはじめの行が、for $i=開始行 の開始行になります。
で、0スタートです(0行0桁からはじまる。1ではない)
したがって、例の場合は、開始行は2からです。
ふつうのExcelの仕様書をCSVファイル形式でおとすと、こんな感じになると思います
で、昨日のPHPプログラム(makepro.php)にバグがあって、途中に、改行だけの空白行があった場合、その行を読み飛ばしてしまいます。
そのため、最終行以外で、改行だけの行がある場合、漢字の空白なり、何か文字を入れるなりして、空白行でないようにしてください。
(今度、Webに公開するかもしれませんけど、そのときは、途中に空白行があっても大丈夫なように、直しておきます)
実際にこれを使ってやる場合、雛形をいっぺんに作ると、バグがあると、なにもでない!となってしまい、バグが見つけにくいので、まず、テストデータをつくって、雛形をすこし作ったら、確認しながら、全体を作っていったほうが、やりやすいです。
ちなみに、なんで、これで、ソースが作成されるかというと、実は、ここのブログで書いたことの応用です。
コントローラー=makeproでやっていること
画面の内容をセッションにいれて
処理(CSVデータを読み込む)をして
その結果を、セッションに入れて
画面(ここでは、雛形プログラム)を呼び出す
処理部分(shori)=makeproのshori
CSVデータを読み込んでいる
画面=自動生成されるソースプログラム
セッションの内容($dataにいれている)を、セットして、
画面(じゃなくって、ソースコードだけど)を生成
これを一連の処理として実行すると、CSVデータを読み込み、その内容をセッションにセットして、雛形ファイルをLocationで呼び出して、セッションにはいっているCSVの内容を取り出して、雛形の指定のところに入れてもらうと、画面のかわりにソースコードをつくってくれるということです。
っていうことは、データをセットして、画面のかわりに、PDFlibを使って、PDF書き出しをしたら
帳票作成ツールができるのかとか?
っていうことは、データをセットして、画面のかわりに、GDを使って、グラフ書き出しをしたら
グラフ作成パッケージができるのかとか?
言われたら。。。たぶんできるんでしょうな。。
(ただ、その場合は、雛形ファイルをPHPプログラムにするより、雛形ファイルは、位置と、文字や線など表示種類と、文字の場合、CSVデータのどの項目を出力するのかの指定にして、画面プログラムは、CSVデータと、この雛形データを読み込んで表示する形にしたほうが、後での雛形修正が楽)
とするとですよ。。。
Javaなんかだと、帳票作成ツールは、自分で作らないけど、PHPの場合、そういうツールを作れるから、PHPのほうが、自由度たかいっちゃー、たかいよね。
ということで、この「PHPでつくる、仕様書からのプログラム自動生成」シリーズはここで完結です。