CakePHP

CakePHP プラグイン(plugin)について[2]

CakePHPのプラグイン(plugin)について第2弾

プラグイン(plugin)の基本ができたら次のステップです。
ステップというより注意点かもしれません(汗
プラグイン(plugin)は開発には大変便利な機能で、一度作成したアプリケーションを
再利用可能であれば開発すればするほど後々楽になります。
実際プラグイン(plugin)はよく使います。
しかし、プラグイン化(plugin)した際に注意点があります。
それはモデルのアソシエーション部分です。
通常のアソシエーション記述とは異なるのです。

例えば「product」というモデルと「category」モデルがアソシエーションしているとします。
その場合

var $belongsTo = array(
'Category' => array(
'className' => 'Category',
'foreignKey' => 'category_id'
)
); 

が基本の記述ですが、プラグイン化(plugin)の場合

//プラグイン名を「plugin1」とします
var $belongsTo = array(
'Category' => array(
'className' => 'Plugin1.Category',
'foreignKey' => 'category_id'
)
); 

がプラグイン化(plugin)での記述になります。

しかしCakePHPは上記の記述をしなくても動く場合があります。
なぜ説明したんだと言われそうですが。。。

それはプラグイン(plugin)側の「category」に独自のメソッドがある場合、
上記のように記述していないと、そのメソッドを呼び出すことができません。
これは「app」側にある「category」モデルを参照しているためにおきる現象です。

この注意点を考慮してプラグイン(plugin)を開発してみてください。

コメント