CakePHPの最大の「売り」の1つが「柔軟で疎結合なプラグイン」ですから、自分でプラグインを作っている方も多いでしょう。
小さなプラグインならともかく、それなりのサイズのプラグインになってくると、プラグインで独自のテーブルが必要になりますね。
ですが、プラグインを公開するとして、DDLはどのDB向けに作成しましょうか?MySQL?PostgreSQL?SQLserverは要りませんか?まさか全部作りますか?メンテできますか???
こんな時に便利なのが、SchemaShell機構です。CakePHPのこの機能を使えば、PHPでテーブルの定義を作っておくと、導入先のそれぞれのDBに応じて自動的にSQL文生成が行われるのです。
詳細は拙書 「2-2.スキーマファイルの作成」をご覧頂きたいのですが、プラグインのスキーマファイルの作成方法についてはページの都合で言及できませんでしたので、今日はプラグイン用テーブルのスキーマファイルの作成方法をご紹介します。
といっても、実装は非常に簡単で、例えば通常のスキーマファイル(app\Config\Schema\schema.php)が
<?php class AppSchema extends CakeSchema { public $テーブル名 = array( '項目名' => array(), '項目名' => array(), ) }
上記のようにクラス名は「AppSchema」固定なのですが、
例えばプラグイン「MySuper」のスキーマファイル(plugins\MySuper\Config\Schema\schema.php)は
<?php class MySuperSchema extends CakeSchema { public $テーブル名 = array( ) }
上記のように、クラス名は「プラグイン名」+「Schema」となります。
ここまでできたらあとは拙書p.35の手順に従って、スキーマファイルから実際のDBのテーブルを作成するだけです。