久しぶりにCakePHP2系の案件なので、アプリケーションの骨組みとなるスケルトン構築手順についてメモします。
ComposerでCakePHP2系のインストール
composer.pharにPATHが通っている前提で進めます。*1
基本的には「応用インストール – 2.x」このページの通り進めますが、異なるやり方をする箇所は都度記述します。
composer.jsonを作成
CakePHPをcomposerインストールするためのcomposer.jsonを作成します。
コンソールから
composer require cakephp/cakephp "<3.0.0"
上記のようにインストールすることも出来ますが、Cookbookにならってvendor-dirをVendorに変更*2 するため、マニュアル通りすすめます。
ちなみにインストールするパスは/var/www/とし、cakephpのバージョンは"<3.0.0"で2系の最新となるように設定します。
/var/www/composer.json
{
"name": "example-app",
"require": {
"cakephp/cakephp": "<3.0.0"
},
"config": {
"vendor-dir": "Vendor/"
}
}
さらに、PHPUnitやCakePHPのプラグインDebugkitなどのライブラリもcomposer.jsonに追加します。
PHPUnit ? The PHP Testing Framework
cakephp/debug_kit at 2.2
cakephp/cakephp-codesniffer: CakePHP Code Sniffer
CakeDC/users at 2.x
slywalker/cakephp-plugin-boost_cake: Bootstrap Plugin for CakePHP
{
"name": "astha/example-app",
"description": "The CakePHP2 Skeleton for Astha",
"authors": [
{
"name": "Astha co.ltd.",
}
],
"require": {
"php": ">=5.3.0",
"cakephp/cakephp": ">=2.7.9,<3.0.0",
"cakedc/users": "2.*"
},
"require-dev": {
"phpunit/phpunit": "3.7.*",
"cakephp/debug_kit" : ">=2.2.4,<3.0.0",
"slywalker/boost_cake": "*",
"cakephp/cakephp-codesniffer": ">=1.0.0"
},
"config": {
"vendor-dir": "Vendor/"
},
"extra": {
"installer-paths": {
"./Common/plugins/{$name}/": [
"cakephp/debug_kit",
"slywalker/boost_cake",
"cakedc/users"
]
}
}
}
注目すべきはconfigではvendorのディレクトリを指定していることに、extraでCakePHPのプラグインのインストールパスを指定していることです。
※/Common/plugins/{$name}/というパスは、複数のアプリケーションでプラグインやモデルを使い回せるように弊社で行っている独特な指定なので、通常の環境には当てはまらないことに注意してください。
composer install
コンソールからcomposer installを実行。
cd /var/www composer install
bakeコマンドでprojectを作成
今までの作業で/var/www/Vendor/binにcakeコマンドが置かれているので以下のコマンドでappプロジェクトを作成する。
Vendor/bin/cake bake project /var/www/app
/var/wwwにappディレクトリが作成され、必要なファイルが一式揃う。
コアのパス修正
bakeで作成されたプロジェクトから参照されるCAKE_CORE_INCLUDE_PATHが正しくないので、次の箇所を修正する。
app/webroot/index.php
DS . APP_DIRが不要。
define('CAKE_CORE_INCLUDE_PATH', ROOT . DS . APP_DIR . DS . 'Vendor' . DS . 'cakephp' . DS . 'cakephp' . DS . 'lib'); ↓ define('CAKE_CORE_INCLUDE_PATH', ROOT . DS . 'Vendor' . DS . 'cakephp' . DS . 'cakephp' . DS . 'lib');
CakePHPの初期設定
app/Config内のファイルを設定していきます。
core.php
このファイルで必ず触らなければならないのはSecurity.saltとSecurity.cipherSeedです。直前のコメントに従ってそれぞれ任意の文字列を指定します。
bootstrap.php
App::Build
弊社ではModel、Helper、Component、Pluginを複数のアプリケーションで使い回せるように、ルートディレクトリにCommonディレクトリを作成して*3 格納しています。
そのためApp::buildを以下のように設定します。
App::build(array(
'Model' => array(ROOT . DS . 'Common' . DS . 'Model' . DS),
'Model/Datasource' => array(ROOT . DS . 'Common' . DS . 'Model' . DS . 'Datasource' . DS),
'Model/Behavior' => array(ROOT . DS . 'Common' . DS . 'Model' . DS . 'Behavior' . DS),
'View/Helper' => array(
ROOT . DS . 'Common' . DS . 'Helper' . DS,
APP . DS . 'View' . DS . 'Helper' . DS,
),
'Controller/Component' => array(ROOT . DS . 'Common' . DS . 'Component' . DS),
'Plugin' => array(ROOT . DS . 'Common' . DS . 'plugins' . DS, APP . DS . 'Plugin' . DS),
));
CakePlugin::load
プラグインのロードの記述。
CakePlugin::load('DebugKit');
CakePlugin::load('BoostCake');
CakePlugin::load('Users', ['routes' => true]);
Usersプラグインの設定
// Users設定
Configure::write('Users.emailConfig', 'default');
Configure::write('App.defaultEmail','info@example.com');
Configure::write('Users.roles', array(
'admin' => '管理者',
'user' => '一般ユーザ'
));
// ユーザ自身の登録を許さない
Configure::write('Users.allowRegistration', false);
database.php
データベースの設定
email.php
メール送信設定
