[php] DB::DataObject 事始め
とりあえず使うテーブルをでっちあげてみる。
とはいえ、最初から作るのも面倒なのでwww.l2rr.netで作ったリネージュ2のアイテム製作ツールのデータベースをさっくり流用。
データの中身もインポート。
データ構造は激しくてきとう:-P
テーブルはこんなの。
-- -- テーブルの構造 `cm_item` -- CREATE TABLE `cm_item` ( `id` int(11) NOT NULL auto_increment, `itemName` text NOT NULL, `itemDescription` text, `itemPrize` int(11) default '0', `categoryId` int(11) NOT NULL default '0', `recipe` int(11) NOT NULL default '0', PRIMARY KEY (`id`), KEY `key01` (`categoryId`,`id`) ) TYPE=MyISAM AUTO_INCREMENT=212 ; -- -------------------------------------------------------- -- -- テーブルの構造 `cm_item_category` -- CREATE TABLE `cm_item_category` ( `id` int(11) NOT NULL auto_increment, `categoryName` varchar(100) NOT NULL default '', `categoryDescription` text NOT NULL, `isRecipe` int(11) NOT NULL default '0', `isMaterial` int(11) NOT NULL default '0', PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=12 ; -- -------------------------------------------------------- -- -- テーブルの構造 `cm_recipe` -- CREATE TABLE `cm_recipe` ( `id` int(11) NOT NULL auto_increment, `itemId` int(11) NOT NULL default '0', `level` int(11) NOT NULL default '0', `spendMP` int(11) NOT NULL default '0', `createCount` int(11) NOT NULL default '0', PRIMARY KEY (`id`), UNIQUE KEY `itemId` (`itemId`) ) TYPE=MyISAM AUTO_INCREMENT=58 ; -- -------------------------------------------------------- -- -- テーブルの構造 `cm_recipe_detail` -- CREATE TABLE `cm_recipe_detail` ( `id` int(11) NOT NULL auto_increment, `itemId` int(11) NOT NULL default '0', `recipeId` int(11) NOT NULL default '0', `needCount` int(11) NOT NULL default '0', PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=235 ;
Objectスタブの作成
まずはObjectスタブを作ってみる
公式のヘルプ*1によればPear/DB/createTables.phpにiniの設定を食わせればいいようだ。
とりあえずiniを作ってみた。
[DB_DataObject] database = mysql://root:@localhost/DataObject schema_location = /var/www/html/php/DataObject/DataObjects class_location = /var/www/html/php/DataObject/DataObjects require_prefix = DataObjects/ class_prefix = DataObjects_
- database
DSNを指定。ここではユーザー名root パスワード空白でlocalhostのmysqlのデータベース"DataObject"を使うように指定 - schema_location
スキーマの生成先フォルダを指定 - class_location
Objectスタブクラスの生成先を指定 - require_prefix
? - class_prefix
スタブクラス名のプレフィックスを指定
とりあえずこれで流してみる。
$ php /usr/share/pear/DB/DataObject/createTables.php `pwd`/items.ini Content-type: text/html X-Powered-By: PHP/4.3.11 <code><B>db_dataobject_generator: 0:</B> CREATING FOR DataObject </code><BR> <code><B>db_dataobject_generator: 0:</B> calling generatedefinitions</code><BR> <code><B>db_dataobject_generator: 0:</B> Generating Definitions file: </code><BR> <code><B>db_dataobject_generator: 0:</B> Writing ini as /var/www/html/php/DataObject/DataObjects/DataObject.ini </code><BR> <code><B>db_dataobject_generator: 0:</B> calling generateclasses</code><BR> <code><B>db_dataobject_generator: 0:</B> writing DataObjects_Cm_item </code><BR> <code><B>db_dataobject_generator: 0:</B> writing DataObjects_Cm_item_category </code><BR> <code><B>db_dataobject_generator: 0:</B> writing DataObjects_Cm_recipe </code><BR> <code><B>db_dataobject_generator: 0:</B> writing DataObjects_Cm_recipe_detail </code><BR> <code><B>db_dataobject_generator: 0:</B> writing DataObjects_Cm_warehouse </code><BR> <code><B>db_dataobject_generator: 0:</B> writing DataObjects_Cm_warehouse_detail </code><BR> <code><B>db_dataobject_generator: 0:</B> DONE
成功したくさい。