かばだんなさん かく語りぬ Header Image

CakePHPプラグインのスキーマファイルを作る

CakePHPの最大の「売り」の1つが「柔軟で疎結合なプラグイン」ですから、自分でプラグインを作っている方も多いでしょう。
小さなプラグインならともかく、それなりのサイズのプラグインになってくると、プラグインで独自のテーブルが必要になりますね。

ですが、プラグインを公開するとして、DDLはどのDB向けに作成しましょうか?MySQL?PostgreSQL?SQLserverは要りませんか?まさか全部作りますか?メンテできますか???

こんな時に便利なのが、SchemaShell機構です。CakePHPのこの機能を使えば、PHPでテーブルの定義を作っておくと、導入先のそれぞれのDBに応じて自動的にSQL文生成が行われるのです。
CakeSchema

詳細は拙書 「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のテーブルを作成するだけです。


コメントを残す