CakePHPのコアライブラリを共有できるようにしておくと、複数のアプリで利用できます。CakePHPのリビジョンが上がった場合も、常に最新のCakePHPが利用できるようになります。また、アプリ間で共通のModel,Controllerが共有できると、機能単位でアプリを分けることも可能になります。
環境
- OS CentOS6.4
- CakePHP 2.4.7
Coreライブラリを共有
Coreライブラリを最新に保つために、gitのsubmoduleを利用されている方もありますが、私の方法は、完全に別ディレクトリに最新のCakePHPをデプロイしておき、このディレクトリのCoreライブラリをアプリから参照する方法です。
まず、CakePHPをgithubからクローンします。例では/opt/cakephpに配置します。
$ cd /opt $ git clone git://github.com/cakephp/cakephp.git $ cd cakephp $ git checkout 2.4.7 -b deploy $ git branch * deploy master
このディレクトリの./libディレクトリをアプリで共有します。
./libにphpのロードパスが通ればよいので、php.iniのinclude_pathにこのディレクトリを指定してもよいです。
include_path = ".:/opt/cakephp/lib"
php.iniを変更できないときは、アプリ側のwebroot/index.phpで以下の文を追加します。
define('CAKE_CORE_INCLUDE_PATH', '/opt/cakephp/lib');
これでCakePHPのCoreライブラリの共有が可能となります。
アプリ間でModel,Controllerを共有
以下のようなディレクトリ構成を作成します。commonは共通化したいクラスファイルを配置し、app1,app2から参照します。
/apps/ common/ - 共通クラス Model/ Controller/ app1/ - アプリ1 Config/ Model/ Controller/ app2/ - アプリ2 Config/ Model/ Controller/
app1,app2のConfig/bootstrap.phpで以下の文を追加します。
App::build( array( 'Model' => array('/apps/common/Model'), 'Controller' => array('/apps/common/Controller') ) );
これで、commonのModel,Controllerが共有できるようになります。このようにCoreライブラリやアプリ間の共通クラスを共有しておくと、将来の保守やフレームワークのセキュリティパッチ適用が簡単になります。