CakePHP3はcomposerでのセットアップがデフォルトだが、cakephp2はそういうアナウンスがされておらず、応用インストールという扱いになっている。
http://book.cakephp.org/2.0/ja/installation/advanced-installation.html
CakePHP3が出たとはいっても、CakePHP2もまだまだ現役。今後仕事でまた本格的に使いはじめるのでまとめてみた。cakephp.orgから落とせるzipファイルとほぼ同じディレクトリ構成を目指すよ。
アプリのディレクトリを作成して作業開始。
$ mkdir cakephpapp/ # アプリのディレクトリ作成
composer.jsonの記述
以下の様なcomposer.json
を作成する。公式bookに記載されていたものをベースに様々追加。
公式book:http://book.cakephp.org/2.0/ja/installation/advanced-installation.html
{
"name": "example-app",
"repositories": [
{
"type": "pear",
"url": "http://pear.cakephp.org"
}
],
"require": {
"cakephp/cakephp": ">=2.6.4,<3.0.0"
},
"require-dev": {
"phpunit/phpunit": "3.7.37",
"cakephp/debug_kit" : ">=2.2.4,<3.0.0"
},
"config": {
"vendor-dir": "vendors/"
},
"extra": {
"installer-paths": {
"./plugins/{$name}/": [
"cakephp/debug_kit"
]
}
}
}
現在CakePHP2系の最新版が2.6.4なので、require
にてバージョン2.6.4以上3.0.0未満を指定。
CakePHP2はPHPUnit4系には対応していないため、PHPUnitは3.7.37(最新版)以上4.0.0未満を指定。debug_kitも同様に2.2.4以上3未満を指定。
また/vendors
と/plugins
はgit管理に入れて/app/Vendor
と/app/Plugin
はgit管理する構成にしたかったのでインストールされるディレクトリを調整した。
bakeする
cakephpapp/appというappディレクトリの中に主なソースコードを生成する。
$ vendors/bin/cake bake project app
Welcome to CakePHP v2.6.4 Console
---------------------------------------------------------------
App : testcakephp2
Path: /Users/degawaikuo/workspace/testcakephp2/
---------------------------------------------------------------
Skel Directory: /Users/degawaikuo/workspace/testcakephp2/vendors/cakephp/cakephp/lib/Cake/Console/Templates/skel
Will be copied to: /Users/degawaikuo/workspace/testcakephp2/app
---------------------------------------------------------------
Look okay? (y/n/q)
[y] > y
---------------------------------------------------------------
Created: app in /Users/degawaikuo/workspace/testcakephp2/app
---------------------------------------------------------------
* Random hash key created for 'Security.salt'
* Random seed created for 'Security.cipherSeed'
* Cache prefix set
* app/Console/cake.php path set.
CakePHP is not on your `include_path`, CAKE_CORE_INCLUDE_PATH will be hard coded.
You can fix this by adding CakePHP to your `include_path`.
* CAKE_CORE_INCLUDE_PATH set to /Users/degawaikuo/workspace/testcakephp2/vendors/cakephp/cakephp/lib in webroot/index.php
* CAKE_CORE_INCLUDE_PATH set to /Users/degawaikuo/workspace/testcakephp2/vendors/cakephp/cakephp/lib in webroot/test.php
* Remember to check these values after moving to production server
Project baked successfully!
これでいっぱいコードができたはず。
PHPのビルトインサーバーで動作確認。
$ cd app/webroot
$ php -S localhost:8989
ブラウザでlocalhost:8989にアクセスすると以下の様な画面になるはず。
DebugKitの有効化
/app/Config/bootstrap.phpに以下の1行を追記すればよし。さっきの画面の黄色が一つ緑になるはず。
CakePlugin::loadAll();
ブラウザでlocalhost:8989/test.phpを叩いて以下の様な画面が出たらOK。
データベースの設定
説明省略。これでオールグリーンになる。
ハードコーディングの解消
/app/webroot/index.phpやtest.phpをみるとディレクトリがめっちゃハードコーディングされていてデプロイさせられないので修正する。
// これを
// define('CAKE_CORE_INCLUDE_PATH', DS . 'Users' . DS . 'username'. DS . 'testcakephp2' . DS . 'vendors' . DS . 'cakephp' . DS . 'cakephp' . DS . 'lib');
// こうする
define('CAKE_CORE_INCLUDE_PATH', ROOT. DS . 'vendors' . DS . 'cakephp' . DS . 'cakephp' . DS . 'lib');
git init
.gitignore作る。
/vendors
/plugins
/app/tmp/*
/app/Config/core.php
/app/Config/database.php
composer.lockはignoreせずちゃんとcommitに含めましょうね。
https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file
$ git init
$ git add .
$ git commit -m'initial commit'
以上
サクッとここまで作れるとプロトタイピングも早くなりますね。scaffoldもつかって即効でCRUDアプリを作るタイムアタックも今度やります。