CakePHP 3.0.0-alpha2を触ってみる
TOP > てきとうにこらむ > ゲーム作りとプログラミング日記 > CakePHP 3.0.0-alpha2を触ってみる
CakePHP 3.0.0-alpha2が出ている
CakePHPの次期バージョン、CakePHP 3.0.0-alpha2が先月末にリリースされている。とりあえず触ってみたい。
注意
CakePHP 3.0.0-alpha2はまだbetaですらないので実用できないです。
インストール
Debian GNU/Linux squeezeに、dotdebパッケージを入れてPHP 5.4.31を使用している。CakePHP3.0.0では、PHPのバージョンは5.4.19以上を必要とするので注意。
githubから取得
適宜、git-cloneしておく。この環境下では、~/cakephp/にgithubのクローンが取得されていて、git-pullで同期済みという環境。
$ cd cakephp # 元々あったCakePHPのgithubからのクローン
$ git checkout -b cake3 refs/tags/3.0.0-alpha2
Composerを使えるようにしとく
$ cd ~
$ mkdir cake3
$ rsync -avz ~/cakephp/ . --cvs-exclude
$ pushd cake3
$ wget https://getcomposer.org/installer
$ php installer
エラーが出た
プロジェクトを作成しようとした。
$ php composer.phar create-project -s dev cakephp/app
以下のようなエラーが出た。
Problem 1
- Installation request for cakephp/cakephp 3.0.*-dev -> satisfiable by cakephp/cakephp[3.0.x-dev].
- cakephp/cakephp 3.0.x-dev requires ext-intl * -> the requested PHP extension intl is missing from your system.
php5-intlが足りないらしいのでインストール。
$ sudo aptitude install php5-intl
プロジェクトを作成
やり直し。成功したようだ。
$ php composer.phar create-project -s dev cakephp/app
テーブル定義
cake3testというデータベースを予めつくっておく。
mysql> CREATE DATABASE cake3test DEFAULT CHARACTER SET utf8;
Query OK, 1 row affected (0.00 sec)
sample_sql.sqlというテーブル作成用のSQLを用意。
$ cat > sample_sql.sql # catをちょっとしたエディタとして使っている。当然viなど一般的なエディタでいい
CREATE TABLE users (
id integer not null auto_increment,
name varchar(256) not null,
created datetime,
modified datetime
, primary key(id)
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
CREATE TABLE entries (
id integer not null auto_increment,
user_id integer not null,
title varchar(1024),
body text,
created datetime,
modified datetime,
primary key(id)
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
sample_sql.sqlをcake3testデータベースに流す。
$ mysql cake3test < sample_sql.sql
できたら、testもつくっておくといい。今までの慣習に習ってtest_cake3testデータベースを作成。
mysql> CREATE DATABASE test_cake3test DEFAULT CHARACTER SET utf8;
Query OK, 1 row affected (0.00 sec)
MySQLに接続
database.phpが無くなっていることに驚いた。app/config/app.php内に記述するらしい。
$ vi app/config/app.php
以下のあたりを修正する。
'Datasources' => [
'default' => [
'className' => 'Cake\\Database\\Connection',
'driver' => 'Cake\\Database\\Driver\\Mysql',
'persistent' => false,
'host' => '*********',
'login' => '**********',
'password' => '*************',
'database' => 'cake3test',
'prefix' => false,
'encoding' => 'utf8',
'timezone' => 'SYSTEM',
'cacheMetadata' => true,
],
'test' => [
'className' => 'Cake\\Database\\Connection',
'driver' => 'Cake\\Database\\Driver\\Mysql',
'persistent' => false,
'host' => '**********',
'login' => '***********',
'password' => '***********',
'database' => 'test_cake3test',
'prefix' => false,
'encoding' => 'utf8',
'timezone' => 'SYSTEM',
'cacheMetadata' => true,
'quoteIdentifiers' => false,
//'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'],
],
],
bakeする
おなじみbake。これでwebアプリケーションでのCRUDができる。
$ app/src/Console/cake bake model Users
$ app/src/Console/cake bake model Entries
$ app/src/Console/cake bake controller Users
$ app/src/Console/cake bake controller Entries
$ app/src/Console/cake bake view Users
$ app/src/Console/cake bake view Entries
さんこう
- http://book.cakephp.org/3.0/en/appendices/3-0-migration-guide.html
- http://nanapi.co.jp/blog/2014/04/30/cakephp3-preview/
かんそう
ModelのEntityとTableに分かれてるところは、データベーステーブルの操作と具体的なロジックを分けられるのでいいと思った。まだCakePHP 3.0.0の良さはわかっていないので、さらに調べていこう。
調べたいこと
- ユニットテスト
- Modelの構造
- Viewの構造
- Controllerの構造