CakePHPの設置

雑感

使いこなせてはいませんが、ざっと見た感想です。

メリット

  • 利用者が多いので情報がある
  • 命名規則に従うことで開発工数を減らすことができる
  • 豊富なバリデーション機能がある
  • migration機能を使うことでDB変更履歴をバージョン管理に含むことができる

デメリット

  • VIEWはテンプレート機能として分離されているが、phpのコードを直接書くのでコーダーには抵抗がありそう

必要条件

PHP5.5.9以上
MySQL5.1.10以上(PostgreSQLも可)

PostgreSQLの必要条件は PostgreSQL 8+ と公式ドキュメントに記載がありましたが、8.2.12ではSQLエラーが発生して動作しませんでした。
8.4.7では動作しました。

必要なもののインストール

ICUのインストール

ICUが無ければ入れておきます。

# yum install icu libicu-devel

intlの有効化

PHPは intl が有効になっている必要があります。
有効で無ければ --enable-intl オプションを指定してインストールし直します。

PHPのバージョンアップ

PHPをソースからではなく、パッケージで管理している場合は、以下の手順で5.6以上に更新できます。

# rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# yum install --enablerepo=remi --enablerepo=remi-php56 php php-cli php-common php-gd php-mbstring php-mysql php-pdo php-pgsql php-xml php-intl

MySQLを使用するための準備

データベースにMySQLを使用する場合は --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd オプションを指定してインストールし直します。

php.ini にsockの位置を指定。

# vi /usr/local/lib/php.ini
pdo_mysql.default_socket=/var/lib/mysql/mysql.sock

PostgreSQLを使用するための準備

データベースにPostgreSQLを使用する場合は --with-pdo-pgsql オプションを指定してインストールし直します。

Composerのインストール

CakePHP3系はComposerを利用するため、先にインストールします。

# cd /usr/local/bin
# curl -s https://getcomposer.org/installer | php

エラーでComposerがインストールできない場合

以下のようなメッセージが表示されてインストールできない場合

# curl -s https://getcomposer.org/installer | php
Some settings on your machine make Composer unable to work properly.
Make sure that you fix the issues listed below and run this script again:

The suhosin.executor.include.whitelist setting is incorrect.
Add the following to the end of your `php.ini` or suhosin.ini (Example path [for Debian]: /etc/php5/cli/conf.d/suhosin.ini):
    suhosin.executor.include.whitelist = phar

The php.ini used by your command-line PHP is: /etc/php.ini
If you can not modify the ini file, you can also run `php -d option=value` to modify ini values on the fly. You can use -d multiple times.

php.iniの最後に以下を追加してから実行すれば大丈夫でした。
Apacheの再起動は不要です。

suhosin.executor.include.whitelist = phar

CakePHPのインストール

my_app_nameというフォルダにアプリケーションを作成する場合。

# exit
$ cd /home
$ php /usr/local/bin/composer.phar create-project --prefer-dist cakephp/app my_app_name

作成されたフォルダ内に生成される以下の2つのファイルは残しておくと Composer で引き続き管理ができます。

  • composer.json
  • composer.lock

MySQLを使用するための設定

$ vi config/app.php
# 'quoteIdentifiers' => false,
  'quoteIdentifiers' => true,

PostgreSQLを使用するための設定

PostgreSQLを使用する場合は設定ファイルの default と test の2箇所を書き換えます。

$ vi config/app.php
# 'driver' => 'Cake\Database\Driver\Mysql',
  'driver' => 'Cake\Database\Driver\Postgres',

timezoneの設定

config/app.php は変更しなくてOK?

'Datasources' => [
    'default' => [
        'timezone' => 'UTC',

config/bootstrap.php を変更します。

date_default_timezone_set('Asia/Tokyo');

データベースの作成

SQL文で作成することはもちろんですが、Migrationsの機能を利用することでDB変更履歴をバージョン管理に含めることができるようです。

http://book.cakephp.org/3.0/ja/migrations.html

先にテーブルを作成してからmigrationファイルを生成する場合は以下で可能です。

$ bin/cake bake migration_snapshot Initial

後からmigrationで管理しときゃよかったなー。なんて思う場合は以下のコマンドで適用したことにしちゃうことができます。
20170302002523のマイグレーションを適用したことにしちゃう場合。
引数無しで全部適用しちゃったことになります。

$ bin/cake migrations mark_migrated -t 20170302002523

テーブルprefsのファイルを作成する場合、

$ bin/cake bake migration CreatePrefs name:string created modified

これで config/Migrations 以下にファイル名に日付などが付いたファイルが生成されます。
この時点ではデータベースにはテーブルは生成されていません。

idは自動的に付加されます。
createdとmodifiedはこの名前で生成すると自動的にdatetime型が設定され、それぞれの日時がCakePHPによって更新されるようになるので便利です。

実際に反映させるには以下を実行します。

$ bin/cake migrations migrate

ステータスは以下で確認できます。

$ bin/cake migrations status

戻す場合は以下で一つずつ戻ります。

$ bin/cake migrations rollback

現在のデータベースとの差分を出力する場合は、以下を実行します。

$ bin/cake bake migration_diff NameOfTheMigrations

up() と down() は同じファイルに書けます。
というか書きましょう。

change() はそれだけしか書けないみたいです。
rollbackしたら勝手にchange内容を戻してくれるみたいなので、戻せる内容を書きます。

マニュアル読みましょう
https://book.cakephp.org/3.0/ja/migrations.html

初期データの生成

以下を実行することで基本となるファイルを生成できます。

$ bin/cake bake seed Prefs

config/Seeds/PrefsSeed.php ファイルが生成されるので、この中を編集します。

#$data = [];
 $data = [
     ['id' => 1, 'name' => '北海道'],
     ['id' => 2, 'name' => '青森県'],
];

反映するには以下を実行します。

$ bin/cake migrations seed

ファイルを指定する場合は以下を実行します。

$ bin/cake migrations seed --seed PrefsSeed

seedは履歴管理に含まれないので、実行するたびにデータ投入されるため注意が必要です。

bakeでプログラムの基本を自動生成

データベースを事前に作成しておくとbakeコマンドで基本的なプログラムを自動的に生成することができます。

なので、データベースの設計をきちんとして作成しておくと後々楽ができそうです。

各テーブルに対して実行することができます。
prefsテーブルに対してすべてのプログラムを生成する場合は、

$ bin/cake bake all prefs

src と tests 以下の Controller, Model, Template にそれぞれ生成されます。

使用できる引数のヘルプは以下で確認できます。

$ bin/cake bake

入門

以下の順番で読み進めると理解が深まりそうです。
特に命名規則は理解しておくといろいろお得がありそうです。

CakePHPを最新に保つ

composer.json 内に記述されている制限の範囲内で更新されます。

"require": {
    "cakephp/cakephp": "~3.2"
}
$ cd /home/my_app_name
$ php /usr/local/bin/composer.phar update

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-03-30 (木) 09:37:44 (32d)