Composerを使ってCakePHP2.4.1とDebugKitをインストールするまで

CakePHPの最新安定版である、バージョン2.4.1をComposerを使用してインストールし、プラグインのDebugKitをインストールするまでを公式ドキュメントをもとに解説します。

追記(2013/10/2)
このディレクトリ構成だとCakePHP本体側とプロジェクト側とで定数に違いが出てしまいBakeコマンドが使えなくなることが判明しました。なので、ディレクトリ構成を公式ドキュメントに近づける形でちょっと変えます。

http://book.cakephp.org/2.0/ja/installation/advanced-installation.html


まず、プロジェクトのルートディレクトリになるフォルダを作ります。今回の例ではホームディレクトリに今回のプロジェクトルートになる「example-app」という名前でディレクトリを作成します。

mkdir ~/example-app


次にexample-appへ移動して用意したディレクトリにcomposerをインストールします。

cd ~/example-app
curl -sS https://getcomposer.org/installer | php


ここまでのディレクトリの構成はこんな感じです。

~/example-app/
    composer.phar


次にインストールするソフトを記述する「composer.json」というファイルを新規に作成します。

vim ~/example-app/composer.json


内容は以下のとおりに記述します。

{
    "name": "example-app",
    "repositories": [
        {
            "type": "pear",
            "url": "http://pear.cakephp.org"
        }
    ],
    "require": {
        "pear-cakephp/cakephp": ">=2.4.1"
    },
    "config": {
        "vendor-dir": "Vendor/"
    }
}


ここまでのディレクトリの構成はこんな感じです。

~/example-app/
    composer.phar
    composer.json

次にいよいよ、composerでCakePHPをインストールします。
以下のコマンドを実行します。

php composer.phar install


これだけでインストール完了。
ここまでのディレクトリの構成はこんな感じです。

example-app/
    composer.phar
    composer.json
    Vendor/
        bin/
        autoload.php
        composer/
        pear-pear.cakephp.org/


次にCakePHPプロジェクトを作成します。
bakeコマンドを使えば簡単にコマンドラインからプロジェクトを作成できます。

Vendor/bin/cake bake project ~/example-app


これで、example-appフォルダ以下にプロジェクトが作られました。
次にwebroot/index.phpにパスに関する定数が定義されているので、それを編集して CAKE_CORE_INCLUDE_PATHの定数を絶対パスから相対パスに変更します。変更する理由は、デプロイした時に困るからです。
CAKE_CORE_INCLUDE_PATHを定義している箇所を探して、コメントアウトしてから以下の記述を追加します。

define(
'CAKE_CORE_INCLUDE_PATH',
    ROOT . DS . APP_DIR . '/Vendor/pear-pear.cakephp.org/CakePHP'
);

公式のドキュメントと定義内容に違いがあるのは、ディレクトリ構造の違いのためです。今回の例では、APP_DIRがexample-appになるので公式ドキュメント通りに行うと、example-app/app/Vendorが定数として定義されてしまいます。
公式ドキュメントどおりに設定。

次にプラグインであるDebugKitをインストールします。

最初に作ったcomposer.jsonに以下の記述を追加します。

vim ~/example-app/composer.json
{
    "require": {
        "cakephp/debug_kit": "2.2.*"
    }
}

composer.jsonの全文を載せます。

{
    "name": "example-app",
    "repositories": [
        {
            "type": "pear",
            "url": "http://pear.cakephp.org"
        }
    ],
    "require": {
       	"pear-cakephp/cakephp": ">=2.4.1",
	"cakephp/debug_kit": "2.2.*"
    },
    "config": {
        "vendor-dir": "Vendor/"
    }
}


インストールをします。

php composer.phar update


これでインストールされます。

ここまでのディレクトリの構成はこんな感じです。

example-app/
    composer.phar
    composer.json
    ...
    生成されたプロジェクトのフォルダ
    ...
    Plugin/
        DebugKit/
    Vendor/
        bin/
        autoload.php
        composer/
        pear-pear.cakephp.org/


最後にapp/Config/bootstrap.phpを編集して以下の記述を追加します。

// composerのautoloadを読み込み
require APP . '/Vendor/autoload.php';

// CakePHPのオートローダーをいったん削除し、composerより先に評価されるように先頭に追加する
// https://github.com/composer/composer/commit/c80cb76b9b5082ecc3e5b53b1050f76bb27b127b を参照
spl_autoload_unregister(array('App', 'load'));
spl_autoload_register(array('App', 'load'), true, true);

CakePlugin::loadAll();

Vendor/autoload.phpを一度読み込めば良い状態になるので、Composer経由でインストールするだけです。

CakePlugin::loadAll()でプラグインを読み込みます。


これで完了。あとは、databaseの設定だけ。
f:id:higan_n:20131002183119p:plain

公式ドキュメントのやり方とは結構違います。に近づけました。