以下のようなデータベースのテーブル情報のJSONファイルがあるとします。
{
"table_name": {
"id": "int",
"name": "string",
"price": "int",
"created" : "datetime",
"modified": "datetime"
}
}
このJSONファイルからデータベースのモデルクラスとして自動生成させることはできないかとChatGPTに書かせてみた。
#命令文:
あなたは、超優秀なPHPのプログラマーです。
以下の制約条件と入力文をもとに、最高のプログラムを出力してください。
#制約条件:
・PHP8基準とする
#入力文:
{
"table_name": {
"id": "int",
"name": "string",
"price": "int",
"created" : "datetime",
"modified": "datetime"
}
}
このようなJSONファイルがあった場合、
このJSONファイルの情報をもとに、モデルクラスを自動で作るファイル出力プログラム( ModelGenerator)を作ってください。
また、コマンドプロンプトから入力ファイルである*.jsonファイルを指定すると、テーブル名のファイル(*.php)を出力するようなものを作る
生成されたPHPのコードがこちら。
以下は、指定された制約条件と入力文に基づいて、モデルクラスを自動生成するPHPプログラムの例です。
<?php
class ModelGenerator {
private $tableName;
private $columns;
public function __construct($tableName, $columns) {
$this->tableName = $tableName;
$this->columns = $columns;
}
public function generateModel() {
$modelCode = "<?php\n\nclass {$this->tableName} {\n";
foreach ($this->columns as $columnName => $columnType) {
$modelCode .= "\tprivate \${$columnName};\n";
}
$modelCode .= "\n";
foreach ($this->columns as $columnName => $columnType) {
$modelCode .= "\tpublic function get{$columnName}() {\n";
$modelCode .= "\t\treturn \$this->{$columnName};\n";
$modelCode .= "\t}\n\n";
$modelCode .= "\tpublic function set{$columnName}(\${$columnName}) {\n";
$modelCode .= "\t\t\$this->{$columnName} = \${$columnName};\n";
$modelCode .= "\t}\n\n";
}
$modelCode .= "}";
return $modelCode;
}
}
// 入力ファイルのパスをコマンドライン引数から取得
$inputFilePath = $argv[1];
// 入力ファイルの内容を読み込む
$inputData = file_get_contents($inputFilePath);
// JSONを連想配列に変換
$inputArray = json_decode($inputData, true);
// テーブル名を取得
$tableName = key($inputArray);
// カラム情報を取得
$columns = $inputArray[$tableName];
// ModelGeneratorインスタンスを作成
$modelGenerator = new ModelGenerator($tableName, $columns);
// モデルクラスを生成
$modelCode = $modelGenerator->generateModel();
// モデルファイル名を作成
$modelFileName = $tableName . ".php";
// モデルファイルにコードを書き込む
file_put_contents($modelFileName, $modelCode);
echo "モデルファイルが生成されました: {$modelFileName}\n";
上記のプログラムをPHPファイル(例:ModelGenerator.php)として保存し、コマンドプロンプトから以下のように実行します。
php ModelGenerator.php input.json
ここで、input.jsonは入力ファイルのパスです。
このプログラムは、入力されたJSONファイルの情報を解析し、モデルクラスのコードを生成します。生成されたモデルクラスは、指定されたテーブル名のファイル(例:table_name.php)に出力されます。モデルクラスには、各カラムのゲッターとセッターメソッドが含まれます。
なお、上記のプログラムは基本的な実装であり、実際の使用に応じてエラ
ーハンドリングや入力のバリデーションなどを追加することが推奨されます。