久しぶりに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
メール送信設定