CakePHP3 ComponentとHelperにもControllerと同様のPrefix機能を作成するPlugin

CakePHP3 ComponentとHelperにもControllerと同様のPrefix機能を作成するPluginを作成したのでメモ

CakePHP3ではPrefixをつけると、Controllerをディレクトリごとに分けて設置することができます。

自分はよく、管理画面・公開画面をPrefixで分けて作成します。

Controllerはディレクトリに分けることでスッキリするので、 Model、Component、Helperも同様に分けたい思いPluginを作成しました。

GitHub - Junkins/PrefixRegistry

機能 Componentの階層化

機能 Helperの階層化

実装してない機能 Modelは階層化すると色々と不都合がでたので、ペンディング

Setup・使い方

Components

<?php
namespace App\Controller\Admin;

use Cake\Controller\Controller;
use PrefixRegistry\Controller\PrefixComponentRegistry;

class AppController extends Controller
{

    /**
     * initialize
     */
    public function initialize()
    {
        parent::initialize();
        // you can use Components definded on
        // '/src/Controller/Component/Admin/*' OR '/src/Controller/Component/*'.
        $this->_components = new PrefixComponentRegistry($this);
    }
}

Helpers

<?php
namespace App\View\Admin;

use Cake\View\View;
use PrefixRegistry\View\PrefixHelperRegistry;

class AdminView extends View
{
     public function initialize()
     {
         parent::initialize();
         // you can use Helpers definded on
         // '/src/View/Helper/Admin/*' OR '/src/View/Helper/*'.
         $this->_helpers = new PrefixHelperRegistry($this);
     }
}

便利なところ

Prefixのディレクトリに該当のクラスが存在しなければ、通常のディレクトリ配下のクラスを探しに行きます。