詳しくはこちらを、
Plugins — CakePHP Cookbook 3.x documentation
CakePHP 3の標準ではプラグイン名=名前空間名となります。
Foo
というプラグイン名なら、モデルやコントローラーの名前空間は、\Foo\Model
や\Foo\Controller
になります。
AcmeCorp\ContactManager\Model
, AcmeCorp\ContactManager\Controller
のようにベンダー名などを含めた名前空間をプラグインで使用したい場合は、以下のように/
で区切って呼び出します。
// Loads a plugin with a vendor namespace at top level. Plugin::load('AcmeCorp/ContactManager');
Plugin::loadAll()
では、vendor/cakephp-plugin.php
に記述されていないベンダー名のついた名前空間のプラグインは呼び出されないので、注意してください。
この場合のcomposer.json
のパスマッピングの記述は以下のようになるべきです。
"psr-4": { (...) "AcmeCorp\\Users\\": "./plugins/AcmeCorp/Users/src", "AcmeCorp\\Users\\Test\\": "./plugins/AcmeCorp/Users/tests" }
プラグインのテーブルを呼び出す場合は以下のようになります。
// AcmeCorp/ContactManagerプラグインのContactsTable呼び出し TableRegistry::get('AcmeCorp/ContactManager.Contacts');
また、いまのところはbake
コマンドでベンダー名付きの名前空間でプラグインを作成することはできないようです。作成後、本体側のcomposer.json
, vendor/cakephp-plugin.php
とプラグイン側のcomposer.json
を手動で変更しなければなりませんので注意してください。