2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

任意のJSONファイルのデータベースのテーブル情報からモデルファイルを生成するプログラムをCHatGPTに作らせてみた。

Posted at

以下のようなデータベースのテーブル情報の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)に出力されます。モデルクラスには、各カラムのゲッターとセッターメソッドが含まれます。

なお、上記のプログラムは基本的な実装であり、実際の使用に応じてエラ

ーハンドリングや入力のバリデーションなどを追加することが推奨されます。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?