なぜプラグインを作るのか
そこに共通機能があるから!
Controllerの共通機能をComponentにするのと同じように、
プロジェクトの共通機能はプラグインにしましょう。
環境
- PHP 5.6
- CakePHP 2.x
プラグインに必須のファイル
composer.json
以上
プラグイン側のcomposer.json
composer.json
{
"name": "パッケージ名",
"type": "cakephp-plugin",
"description": "説明",
"repositories": [
{ "packagist": false },
{
"type": "composer",
"url": "https://packagist.jp/"
}
],
"require": {
"composer/installers": "*"
},
"extra": {
"installer-name": "プラグインのインストール名"
}
}
必須項目
- name:パッケージ名。小文字。プラグインをインストールするときに指定する名前。
- type:プラグインの種別を指定できます。これはcomposer/installersライブラリの機能。CakePHPの場合はcakephp-pluginとします。
- require:typeを指定するためにcomposer/installersをインストールするようにします。
任意の項目
- extra:composer/installersライブラリの機能。installer-nameを指定すると、パッケージ名ではなく、ここで指定されたディレクトリにインストールされるようになる。
プラグインを利用する側のcomposer.json
以下が、プラグインを利用する側のcomposer.jsonの例です。
手で書いても良いですが、composerコマンドで指定するほうが良いです。
注:以下では、非公開のプライベートリポジトリを使用するため、リポジトリURLを指定しています。
composer.json
{
"repositories": [
{
"type": "git",
"url": "git@github.com:リポジトリ名"
}
],
"require": {
"パッケージ名": "バージョン"
}
}
composerコマンド
composer require 'パッケージ名:バージョン'
プラグイン内のファイル構成
必要な機能だけ用意することができます。
例
プラグインroot
+---Lib
+---Model
+---Test
| \---Case
| \---Model
\---composer.json
プラグインのテスト
プラグインを利用する側から、通常のテストと同様に実行することができます。
公式ドキュメントにも記載されています。
例
# プラグインのテストを実行する
./Console/cake test プラグイン名 Controller/コントローラ名