ComposerでCekePHPをインストール – PHP

[PR]

これ、1年ぐらい前からたまにやっては毎回苦戦してたので、どこかでメモを残そうと思ってたんだけど、今回やってみると苦戦してたとこが改善されてるわ、公式ドキュメント(しかも日本語)もあるわで、書く必要もなくなってた気もするが、でもやっぱメモ。

だったら公式見るわクソが!って人はこちらで!
http://book.cakephp.org/2.0/ja/installation/advanced-installation.html

ターミナルとかでアプリを置く適当なディレクトリを作って移動

mkdir {ディレクトリのパス}
cd {ディレクトリのパス}

そこにcomposer.pharをダウンロードして、
composer.pharを最新版に更新(ダウンロード直後なら要らないとは思うけど)

curl -s http://getcomposer.org/installer | php
php composer.phar self-update

composer.jsonを用意
例)

{
    "name": "app",
    "repositories": [
        {
            "type": "pear",
            "url": "http://pear.cakephp.org"
        }
    ],
    "require": {
        "cakephp/cakephp": ">=2.4.9",
        "cakephp/debug_kit": "2.2.*",
        "phpunit/phpunit": "3.7.*",
        "facebook/php-sdk": "dev-master",
        "slywalker/boost_cake": "*",
        "cakedc/utils": "*",
        "cakedc/search": "*"
    },
    "config": {
        "vendor-dir": "Vendor/"
    }
}

requireのところはcakephpとdebug_kitがあればオッケー。
他はPackagistとか見て、必要そうなものを入れてください。

composer.jsonに記載したものをインストールというかダウンロード

php composer.phar install

VenderとPluginフォルダにいい感じに入ってくれます。

CakePHPのBakeを使ってアプリを作成

Vendor/bin/cake bake project {アプリディレクトリ名}

これでアプリに必要な構成が指定のディレクトリ名に入ってくれるのですが、
個人的には同じ階層に展開しがち(なんか落ち着く)。

でも公式ドキュメントの通り、ちゃんとディレクトリを分けた方が、1つのCakePHPのライブラリ群で複数アプリを作ることもできるので、そっちの方がオススメです。

これでCakPHPの初期画面は表示されるはず。
黄色い部分を直せば使えます。

この黄色い部分の修正でComposerに絡むのはDebugKitを入れろっていう注意文。
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();

これでVenderとかPluginに入ってるやつが全部読み込まれて、composer.jsonにDebugKitの記載を入れていれば、CakePHPの初期画面のDebugKitについての表記の背景が緑に変わるはず。

この辺、公式ドキュメントに合わせるとautoloadのパスがズレそうな気がするんだけどなー。
よく分からん。

あとは、DBの接続設定は必要。
それが済んで、他にも注意文があればそれを解消したら、
先にDB側に構造を作ってしまって、ModelとControllerとViewをBakeで生成。

./Console/cake bake model all
./Console/cake bake controller all
./Console/cake bake view all

とすれば、基本的なアプリの追加/編集/削除は作れる。

DBの構造をCakePHPのルール通りにすればするだけ、ちゃんとした表示をしてくれるので、
ちゃんとしとくと便利。
一通り画面を見て、意図と違うなってとこがあれば、DBの構造を修正して、またbakeすれば良し。