DBからクラスを自動生成

PDOサンプルの続き。
PDOサンプルは「1クラス=1テーブル」というようにクラスを定義するイメージだったのですが、スクリプトを書けばまとめて作れるかもしれない。

今回のPDOサンプルに関係なくても、DBからクラス定義などを自動生成するというのは他にも活用例がありそう。 [php num=1]<?php $host = 'localhost'; $dbname = 'test'; $user = 'user'; $password = 'password';

foreach ($argv as $arg) { $arr = split('=', $arg); switch($arr[0]) { case '-host': $host = $arr[1]; break; case '-dbname': $dbname = $arr[1]; break; case '-user': $user = $arr[1]; break; case '-password': $password = $arr[1]; break; } }

$dsn = "mysql:host=$host;dbname=$dbname"; $dbh = new PDO($dsn, $user, $password);

$tables = array(); foreach ($dbh->query('show tables') as $row) { $tables[] = $row[0]; }

foreach ($tables as $table) { $primarykey = ''; foreach ($dbh->query("show fields from $table") as $field) { if ($field['Key'] == 'PRI') { $primarykey = $field['Field']; } }

$data = <<<EOD

require_once 'DBTable.php';

class DBTable_{$table} extends DBTable { function __constructor() { \$this->table = '{$table}'; \$this->primrykey = '{$primarykey}'; } }

EOD;

file_put_contents("./DBTable_$table.php", $data); }

exit();[/php]