CakePHP3でComponentのフォルダ階層を変更する

この記事の目次
chevron_right やりたいこと
chevron_right loadComponent

やりたいこと

CakePHP3は、

[PROJECT]
  └ src/
    └ Controller/
    └ Component/
      ├ HogeComponent.php
      ├ FugaComponent.php
      ├ FugoComponent.php
      ├ ...

のように、コンポーネントをComponentフォルダ配下に置かなければいけません
しかし、たくさんコンポーネントを作成するとComponentフォルダ配下がどえらいことになります。

なので、コンポーネントを階層分けしましょう。

例えば、

[PROJECT]
  └ src/
  └ Controller/
  └ Component/
    ├ Fu/
    │  ├ FugaComponent.php
    │  └ FugoComponent.php
    ├ HogeComponent.php
    ├ ...

のように、「Fu」がつくcomponentはFuフォルダの中に入れてしまします。

loadComponent

さて、上記のようにComponentフォルダを階層分けすると、loadComponentでコンポーネントが呼び出せなくなります。
階層分けを行った場合は、以下のように呼び出します。

$this->loadComponent('コンポーネント名', [
    'className' => 'コンポーネントのネームスペース'
]);

では、例でFugoComponent.phpをloadしてみます。

$this->loadComponent('Fugo', [
    'className' => 'AppControllerComponentFuFugoComponent'
]);
おすすめの本
この記事を書いた人
Nな人(えぬなひと)。
Nは本名から取っています。
Laravelが大好きなPHPerで、WEBを作るときはLaravelを技術スタックに絶対推すマン。
PHP、Pythonと、昔はperlを書いていたP言語エンジニア。
最近はNimを書いたりしています。