SlideShare a Scribd company logo
CakePHP3
ウォークスルー
デジタルサーカス(株)長谷川智希
長谷川智希
とも き
@tomzoh

とむぞう
開発系趣味
その他趣味
Webサイト開発, iOSアプリ開発
レンタルカートレース, 電子工作(mbed), …
TOMZOH
お仕事 スマホアプリ受託開発 Mgr
デジタルサーカス(株) 副団長CTO
東京都港区南青山(表参道)
Facebook CakePHP iOS
長谷川智希
とも き
@tomzoh

とむぞう
開発系趣味
その他趣味
Webサイト開発, iOSアプリ開発
TOMZOH
お仕事 スマホアプリ受託開発 Mgr
デジタルサーカス(株) 副団長CTO
レンタルカートレース
東京都港区南青山(表参道)
Facebook CakePHP iOS
http://www.amazon.co.jp/dp/4798039519
Webアプリ開発を加速する CakePHP2定番レシピ119
デジタルサーカス(株)
・ Webサイト受託開発
・ スマホアプリ受託開発



・ 自社サービス
(PHP, Drupal, CakePHP)
(iOS, Android)



(http://appbuilder.jp)
Twitter: @tomzoh
東京都港区南青山(表参道)
デジタルサーカス(株)
・ Webサイト受託開発
・ スマホアプリ受託開発



・ 自社サービス
(PHP, Drupal, CakePHP)
(iOS, Android)



(http://appbuilder.jp)
Twitter: @tomzoh
東京都港区南青山(表参道)
Twitter: @tomzoh
Twitter: @tomzoh
今日のテーマ:
CakePHP3ウォークスルー
の前に…
CakePHPの歴史
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
2012
12⽉月 CakePHP 1.2
5⽉月 CakePHP 1.1
3⽉月 CakePHP 1.0
4⽉月 CakePHP 1.3
10⽉月 CakePHP 2.0
3⽉月 CakePHP 3.0
12⽉月 CakePHP 2.6
3⽉月 CakePHP 2.5
1⽉月 CakePHP 2.3
7⽉月 CakePHP 2.2
3⽉月 CakePHP 2.1
4⽉月 CakePHP 2.4
3⽉月 Cake
CakePHPの歴史
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
2012
12⽉月 CakePHP 1.2
5⽉月 CakePHP 1.1
3⽉月 CakePHP 1.0
4⽉月 CakePHP 1.3
10⽉月 CakePHP 2.0
3⽉月 CakePHP 3.0
12⽉月 CakePHP 2.6
3⽉月 CakePHP 2.5
1⽉月 CakePHP 2.3
7⽉月 CakePHP 2.2
3⽉月 CakePHP 2.1
4⽉月 CakePHP 2.4
3⽉月 Cake
CakePHPの歴史
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
2012
12⽉月 CakePHP 1.2
5⽉月 CakePHP 1.1
3⽉月 CakePHP 1.0
4⽉月 CakePHP 1.3
3⽉月 Cake
CakePHPの歴史
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
2012
12⽉月 CakePHP 1.2
5⽉月 CakePHP 1.1
3⽉月 CakePHP 1.0
4⽉月 CakePHP 1.3
7⽉月 Ruby on Rails 1st
12⽉月 Ruby on Rails 1.0
3⽉月 Cake
CakePHPの歴史
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
2012
12⽉月 CakePHP 1.2
5⽉月 CakePHP 1.1
3⽉月 CakePHP 1.0
4⽉月 CakePHP 1.3
7⽉月 Ruby on Rails 1st
12⽉月 Ruby on Rails 1.0
3⽉月 Cake
CakePHPの歴史
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
2012
12⽉月 CakePHP 1.2
5⽉月 CakePHP 1.1
3⽉月 CakePHP 1.0
4⽉月 CakePHP 1.3
7⽉月 Ruby on Rails 1st
12⽉月 Ruby on Rails 1.0
3⽉月 Cake
CakePHPの歴史
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
2012
12⽉月 CakePHP 1.2
5⽉月 CakePHP 1.1
3⽉月 CakePHP 1.0
4⽉月 CakePHP 1.3
7⽉月 Ruby on Rails 1st
12⽉月 Ruby on Rails 1.0
3⽉月 Cake
CakePHPの歴史
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
2012
12⽉月 CakePHP 1.2
5⽉月 CakePHP 1.1
3⽉月 CakePHP 1.0
4⽉月 CakePHP 1.3
7⽉月 Ruby on Rails 1st
12⽉月 Ruby on Rails 1.0
3⽉月 Cake
CakePHPの歴史
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
2012
12⽉月 CakePHP 1.2
5⽉月 CakePHP 1.1
3⽉月 CakePHP 1.0
4⽉月 CakePHP 1.3
3⽉月 Cake
CakePHPの歴史
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
2012
12⽉月 CakePHP 1.2
5⽉月 CakePHP 1.1
3⽉月 CakePHP 1.0
4⽉月 CakePHP 1.3
3⽉月 Cake
CakePHPの歴史
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
7⽉月 PHP 4.4.0
7⽉月 PHP 5.0.0
11⽉月 PHP 5.1.0
12⽉月 PHP 5.2.0
7⽉月 12⽉月でPHP4サポート終了了発表
2012
12⽉月 CakePHP 1.2
5⽉月 CakePHP 1.1
3⽉月 CakePHP 1.0
4⽉月 CakePHP 1.3
3⽉月 Cake
CakePHPの歴史
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
7⽉月 PHP 4.4.0
7⽉月 PHP 5.0.0
11⽉月 PHP 5.1.0
12⽉月 PHP 5.2.0
7⽉月 12⽉月でPHP4サポート終了了発表
2012
12⽉月 CakePHP 1.2
5⽉月 CakePHP 1.1
3⽉月 CakePHP 1.0 PHP4.3.2+
4⽉月 CakePHP 1.3
3⽉月 Cake
CakePHPの歴史
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
7⽉月 PHP 4.4.0
7⽉月 PHP 5.0.0
11⽉月 PHP 5.1.0
12⽉月 PHP 5.2.0
7⽉月 12⽉月でPHP4サポート終了了発表
2012
12⽉月 CakePHP 1.2
5⽉月 CakePHP 1.1
3⽉月 CakePHP 1.0 PHP4.3.2+
4⽉月 CakePHP 1.3
1⽉月 Symfony 1.0
3⽉月 Cake
CakePHPの歴史
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
7⽉月 PHP 4.4.0
7⽉月 PHP 5.0.0
11⽉月 PHP 5.1.0
12⽉月 PHP 5.2.0
7⽉月 12⽉月でPHP4サポート終了了発表
2012
12⽉月 CakePHP 1.2
5⽉月 CakePHP 1.1
3⽉月 CakePHP 1.0 PHP4.3.2+
4⽉月 CakePHP 1.3
1⽉月 Symfony 1.0 PHP 5.0+
3⽉月 Cake
CakePHPの歴史
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
2012
12⽉月 CakePHP 1.2
4⽉月 CakePHP 1.3
5⽉月 CakePHP 1.1
3⽉月 CakePHP 1.0 PHP4.3.2+
3⽉月 Cake
7⽉月 PHP 4.4.0
7⽉月 PHP 5.0.0
11⽉月 PHP 5.1.0
12⽉月 PHP 5.2.0
7⽉月 12⽉月でPHP4サポート終了了発表
CakePHPの歴史
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
2012
12⽉月 CakePHP 1.2
4⽉月 CakePHP 1.3
5⽉月 CakePHP 1.1
3⽉月 CakePHP 1.0 PHP4.3.2+
3⽉月 Cake
7⽉月 PHP 4.4.0
7⽉月 PHP 5.0.0
11⽉月 PHP 5.1.0
12⽉月 PHP 5.2.0
7⽉月 12⽉月でPHP4サポート終了了発表
10⽉月 CakePHP 2.0
CakePHPの歴史
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
2012
12⽉月 CakePHP 1.2
4⽉月 CakePHP 1.3
5⽉月 CakePHP 1.1
3⽉月 CakePHP 1.0 PHP4.3.2+
PHP5.2.6+
3⽉月 Cake
7⽉月 PHP 4.4.0
7⽉月 PHP 5.0.0
11⽉月 PHP 5.1.0
12⽉月 PHP 5.2.0
7⽉月 12⽉月でPHP4サポート終了了発表
10⽉月 CakePHP 2.0
CakePHPの歴史
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
2012
12⽉月 CakePHP 1.2
4⽉月 CakePHP 1.3
5⽉月 CakePHP 1.1
3⽉月 CakePHP 1.0 PHP4.3.2+
PHP5.2.6+
3⽉月 Cake
7⽉月 PHP 4.4.0
7⽉月 PHP 5.0.0
11⽉月 PHP 5.1.0
12⽉月 PHP 5.2.0
7⽉月 12⽉月でPHP4サポート終了了発表
12⽉月 CakePHP 2.6
3⽉月 CakePHP 2.5
1⽉月 CakePHP 2.3
7⽉月 CakePHP 2.2
3⽉月 CakePHP 2.1
4⽉月 CakePHP 2.4
10⽉月 CakePHP 2.0
CakePHPの歴史
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
2012
12⽉月 CakePHP 1.2
4⽉月 CakePHP 1.3
5⽉月 CakePHP 1.1
3⽉月 CakePHP 1.0 PHP4.3.2+
PHP5.2.6+
3⽉月 Cake
7⽉月 PHP 4.4.0
7⽉月 PHP 5.0.0
11⽉月 PHP 5.1.0
12⽉月 PHP 5.2.0
7⽉月 12⽉月でPHP4サポート終了了発表
12⽉月 CakePHP 2.6
3⽉月 CakePHP 2.5
1⽉月 CakePHP 2.3
7⽉月 CakePHP 2.2
3⽉月 CakePHP 2.1
4⽉月 CakePHP 2.4
10⽉月 CakePHP 2.0
CakePHPの歴史
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
2012
12⽉月 CakePHP 1.2
4⽉月 CakePHP 1.3
5⽉月 CakePHP 1.1
3⽉月 CakePHP 1.0 PHP4.3.2+
PHP5.2.6+
3⽉月 Cake
7⽉月 PHP 4.4.0
7⽉月 PHP 5.0.0
11⽉月 PHP 5.1.0
12⽉月 PHP 5.2.0
7⽉月 12⽉月でPHP4サポート終了了発表
Composer 1.0.0-alpha1
PSR-2
PSR−4
12⽉月 CakePHP 2.6
3⽉月 CakePHP 2.5
1⽉月 CakePHP 2.3
7⽉月 CakePHP 2.2
3⽉月 CakePHP 2.1
4⽉月 CakePHP 2.4
10⽉月 CakePHP 2.0
PHP Standard Recommendation
CakePHPの歴史
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
6⽉月 PHP 5.3.0
3⽉月 PHP 5.4.0 2012
6⽉月 PHP 5.5.0
8⽉月 PHP 5.6.0
12⽉月 CakePHP 1.2
4⽉月 CakePHP 1.3
5⽉月 CakePHP 1.1
3⽉月 CakePHP 1.0 PHP4.3.2+
PHP5.2.6+
3⽉月 Cake
7⽉月 PHP 4.4.0
7⽉月 PHP 5.0.0
11⽉月 PHP 5.1.0
12⽉月 PHP 5.2.0
7⽉月 12⽉月でPHP4サポート終了了発表
Composer 1.0.0-alpha1
PSR-2
PSR−4
12⽉月 CakePHP 2.6
3⽉月 CakePHP 2.5
1⽉月 CakePHP 2.3
7⽉月 CakePHP 2.2
3⽉月 CakePHP 2.1
4⽉月 CakePHP 2.4
10⽉月 CakePHP 2.0
PHP Standard Recommendation
CakePHPの歴史
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
6⽉月 PHP 5.3.0
3⽉月 PHP 5.4.0 2012
6⽉月 PHP 5.5.0
8⽉月 PHP 5.6.0
12⽉月 CakePHP 1.2
4⽉月 CakePHP 1.3
5⽉月 CakePHP 1.1
3⽉月 CakePHP 1.0 PHP4.3.2+
PHP5.2.6+
名前空間クロージャ
トレイトarray() → []
3⽉月 Cake
7⽉月 PHP 4.4.0
7⽉月 PHP 5.0.0
11⽉月 PHP 5.1.0
12⽉月 PHP 5.2.0
7⽉月 12⽉月でPHP4サポート終了了発表
Composer 1.0.0-alpha1
PSR-2
PSR−4
12⽉月 CakePHP 2.6
3⽉月 CakePHP 2.5
1⽉月 CakePHP 2.3
7⽉月 CakePHP 2.2
3⽉月 CakePHP 2.1
4⽉月 CakePHP 2.4
10⽉月 CakePHP 2.0
PHP Standard Recommendation
CakePHPの歴史
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
6⽉月 PHP 5.3.0
3⽉月 PHP 5.4.0 2012
6⽉月 PHP 5.5.0
8⽉月 PHP 5.6.0
12⽉月 CakePHP 1.2
4⽉月 CakePHP 1.3
5⽉月 CakePHP 1.1
3⽉月 CakePHP 1.0 PHP4.3.2+
PHP5.2.6+
名前空間クロージャ
トレイトarray() → []
3⽉月 Cake
7⽉月 PHP 4.4.0
7⽉月 PHP 5.0.0
11⽉月 PHP 5.1.0
12⽉月 PHP 5.2.0
7⽉月 12⽉月でPHP4サポート終了了発表
Composer 1.0.0-alpha1
PSR-2
PSR−4
12⽉月 CakePHP 2.6
3⽉月 CakePHP 2.5
1⽉月 CakePHP 2.3
7⽉月 CakePHP 2.2
3⽉月 CakePHP 2.1
4⽉月 CakePHP 2.4
10⽉月 CakePHP 2.0
イケてない感(個⼈人の感想です)
PHP Standard Recommendation
CakePHPの歴史
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
6⽉月 PHP 5.3.0
3⽉月 PHP 5.4.0 2012
6⽉月 PHP 5.5.0
8⽉月 PHP 5.6.0
12⽉月 CakePHP 1.2
4⽉月 CakePHP 1.3
5⽉月 CakePHP 1.1
3⽉月 CakePHP 1.0 PHP4.3.2+
PHP5.2.6+
名前空間クロージャ
トレイトarray() → []
3⽉月 Cake
7⽉月 PHP 4.4.0
7⽉月 PHP 5.0.0
11⽉月 PHP 5.1.0
12⽉月 PHP 5.2.0
7⽉月 12⽉月でPHP4サポート終了了発表
Composer 1.0.0-alpha1
PSR-2
PSR−4
12⽉月 CakePHP 2.6
3⽉月 CakePHP 2.5
1⽉月 CakePHP 2.3
7⽉月 CakePHP 2.2
3⽉月 CakePHP 2.1
4⽉月 CakePHP 2.4
10⽉月 CakePHP 2.0
PHP Standard Recommendation
Composer 1.0.0-alpha1
PSR-2
PSR−4
CakePHPの歴史
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
6⽉月 PHP 5.3.0
3⽉月 PHP 5.4.0 2012
6⽉月 PHP 5.5.0
8⽉月 PHP 5.6.0
12⽉月 CakePHP 1.2
4⽉月 CakePHP 1.3
5⽉月 CakePHP 1.1
3⽉月 CakePHP 1.0 PHP4.3.2+
PHP5.2.6+
名前空間クロージャ
トレイトarray() → []
3⽉月 Cake
7⽉月 PHP 4.4.0
7⽉月 PHP 5.0.0
11⽉月 PHP 5.1.0
12⽉月 PHP 5.2.0
7⽉月 12⽉月でPHP4サポート終了了発表
12⽉月 CakePHP 2.6
3⽉月 CakePHP 2.5
1⽉月 CakePHP 2.3
7⽉月 CakePHP 2.2
3⽉月 CakePHP 2.1
4⽉月 CakePHP 2.4
10⽉月 CakePHP 2.0
Composer 1.0.0-alpha1
PSR-2
PSR−4
CakePHPの歴史
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
6⽉月 PHP 5.3.0
3⽉月 PHP 5.4.0 2012
6⽉月 PHP 5.5.0
8⽉月 PHP 5.6.0
12⽉月 CakePHP 1.2
4⽉月 CakePHP 1.3
5⽉月 CakePHP 1.1
3⽉月 CakePHP 1.0 PHP4.3.2+
PHP5.2.6+
名前空間クロージャ
トレイトarray() → []
3⽉月 Cake
7⽉月 PHP 4.4.0
7⽉月 PHP 5.0.0
11⽉月 PHP 5.1.0
12⽉月 PHP 5.2.0
7⽉月 12⽉月でPHP4サポート終了了発表
12⽉月 CakePHP 2.6
3⽉月 CakePHP 2.5
1⽉月 CakePHP 2.3
7⽉月 CakePHP 2.2
3⽉月 CakePHP 2.1
4⽉月 CakePHP 2.4
10⽉月 CakePHP 2.0
3⽉月 CakePHP 3.0
Composer 1.0.0-alpha1
PSR-2
PSR−4
CakePHPの歴史
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
6⽉月 PHP 5.3.0
3⽉月 PHP 5.4.0 2012
6⽉月 PHP 5.5.0
8⽉月 PHP 5.6.0
12⽉月 CakePHP 1.2
4⽉月 CakePHP 1.3
5⽉月 CakePHP 1.1
3⽉月 CakePHP 1.0 PHP4.3.2+
PHP5.2.6+
名前空間クロージャ
トレイトarray() → []
3⽉月 Cake
7⽉月 PHP 4.4.0
7⽉月 PHP 5.0.0
11⽉月 PHP 5.1.0
12⽉月 PHP 5.2.0
7⽉月 12⽉月でPHP4サポート終了了発表
12⽉月 CakePHP 2.6
3⽉月 CakePHP 2.5
1⽉月 CakePHP 2.3
7⽉月 CakePHP 2.2
3⽉月 CakePHP 2.1
4⽉月 CakePHP 2.4
10⽉月 CakePHP 2.0
3⽉月 CakePHP 3.0 PHP5.4+
CakePHP3
• PHP5.4+
• トレイト, 配列短縮構文
• Composer必須
• zipファイルをダウンロードしないでOK
• PSR-2, PSR-4
• オブジェクト化。特にORマッパ。
• 「配列地獄」からの脱出
CakePHP3
• PHP5.4+
• トレイト, 配列短縮構文
• Composer必須
• zipファイルをダウンロードしないでOK
• PSR-2, PSR-4
• オブジェクト化。特にORマッパ。
• 「配列地獄」からの脱出
イケてる感(個⼈人の感想です)
CakePHP3ウォークスルー
CakePHPセットアップ
CakePHP2 - セットアップ
{
"name": "app",
"repositories": [
{
"type": "pear",
"url": "http://pear.cakephp.org"
}
],
"require": {
"cakephp/cakephp": "~2.6",
"cakephp/debug_kit": ">=2.2",
"cakedc/migrations": "~2.3",
"fabpot/goutte": "~2.0",
"phpunit/phpunit": "3.7.*"
},
"config": {
"vendor-dir": "Vendor/"
}
}
composer.json
CakePHP2 - セットアップ
# vi composer.json
# composer install
(略略)
# ./Vendor/bin/cake bake
(略略)
# ls -alF
total 24
drwxrwxr-x 1 nobody nogroup 204 6⽉月 25 18:14 ./
drwxrwxr-x 1 nobody nogroup 578 6⽉月 25 18:06 ../
drwxrwxr-x 1 nobody nogroup 102 6⽉月 25 18:14 Plugin/
drwxrwxr-x 1 nobody nogroup 306 6⽉月 25 18:14 Vendor/
drwxrwxr-x 1 nobody nogroup 544 6⽉月 25 23:37 app/
-rwxrwxr-x 1 nobody nogroup 283 6⽉月 25 18:06 composer.json*
-rwxrwxr-x 1 nobody nogroup 18465 6⽉月 25 18:14 composer.lock*
# vi app/webroot/index.php
# vi app/webroot/test.php
# vi app/Console/cake.php
appを作る
CakePHP2 - セットアップ
# vi composer.json
# composer install
(略略)
# ./Vendor/bin/cake bake
(略略)
# ls -alF
total 24
drwxrwxr-x 1 nobody nogroup 204 6⽉月 25 18:14 ./
drwxrwxr-x 1 nobody nogroup 578 6⽉月 25 18:06 ../
drwxrwxr-x 1 nobody nogroup 102 6⽉月 25 18:14 Plugin/
drwxrwxr-x 1 nobody nogroup 306 6⽉月 25 18:14 Vendor/
drwxrwxr-x 1 nobody nogroup 544 6⽉月 25 23:37 app/
-rwxrwxr-x 1 nobody nogroup 283 6⽉月 25 18:06 composer.json*
-rwxrwxr-x 1 nobody nogroup 18465 6⽉月 25 18:14 composer.lock*
# vi app/webroot/index.php
# vi app/webroot/test.php
# vi app/Console/cake.php
appを作る
Composer前提じゃない箇所の修正 (‘;ω;)ウッ
CakePHP3 - セットアップ
# composer create-project --prefer-dist cakephp/app cake3
Installing cakephp/app (3.0.3)
- Installing cakephp/app (3.0.3)
Loading from cache
Created project in cake3
Loading composer repositories with package information
Installing dependencies (including require-dev)
- Installing aura/installer-default (1.0.0)
Loading from cache
- Installing cakephp/plugin-installer (0.0.12)
Loading from cache
Writing lock file
Generating autoload files
Created `config/app.php` file
Set Folder Permissions ? (Default to Y) [Y,n]?
Permissions set on /var/www/cake3/tmp/cache
Permissions set on /var/www/cake3/tmp
Permissions set on /var/www/cake3/logs
Updated Security.salt value in config/app.php
CakePHP3 - セットアップ
# composer create-project --prefer-dist cakephp/app cake3
Installing cakephp/app (3.0.3)
- Installing cakephp/app (3.0.3)
Loading from cache
Created project in cake3
Loading composer repositories with package information
Installing dependencies (including require-dev)
- Installing aura/installer-default (1.0.0)
Loading from cache
- Installing cakephp/plugin-installer (0.0.12)
Loading from cache
Writing lock file
Generating autoload files
Created `config/app.php` file
Set Folder Permissions ? (Default to Y) [Y,n]?
Permissions set on /var/www/cake3/tmp/cache
Permissions set on /var/www/cake3/tmp
Permissions set on /var/www/cake3/logs
Updated Security.salt value in config/app.php
CakePHP3のプロジェクトテンプレートを
ダウンロードしてcomposer installする。
CakePHP3 - プロジェクト
# ls -alF cake3
total 76
drwxrwxr-x 1 nobody nogroup 714 6⽉月 26 00:10 ./
drwxrwxr-x 1 nobody nogroup 646 6⽉月 26 00:09 ../
-rwxrwxr-x 1 nobody nogroup 329 5⽉月 2 01:04 .editorconfig*
-rwxrwxr-x 1 nobody nogroup 772 5⽉月 2 01:04 .gitattributes*
-rwxrwxr-x 1 nobody nogroup 41 5⽉月 2 01:04 .gitignore*
-rwxrwxr-x 1 nobody nogroup 140 5⽉月 2 01:04 .htaccess*
-rwxrwxr-x 1 nobody nogroup 337 5⽉月 2 01:04 .travis.yml*
-rwxrwxr-x 1 nobody nogroup 863 5⽉月 2 01:04 README.md*
drwxrwxr-x 1 nobody nogroup 170 5⽉月 2 01:04 bin/
-rwxrwxr-x 1 nobody nogroup 1203 5⽉月 2 01:04 composer.json*
-rwxrwxr-x 1 nobody nogroup 38855 6⽉月 26 00:10 composer.lock*
drwxrwxr-x 1 nobody nogroup 306 6⽉月 26 00:10 config/
-rwxrwxr-x 1 nobody nogroup 648 5⽉月 2 01:04 index.php*
drwxrwxr-x 1 nobody nogroup 102 5⽉月 2 01:04 logs/
-rwxrwxr-x 1 nobody nogroup 819 5⽉月 2 01:04 phpunit.xml.dist*
drwxrwxr-x 1 nobody nogroup 102 5⽉月 2 01:04 plugins/
drwxrwxr-x 1 nobody nogroup 272 5⽉月 2 01:04 src/
drwxrwxr-x 1 nobody nogroup 170 5⽉月 2 01:04 tests/
drwxrwxr-x 1 nobody nogroup 170 5⽉月 2 01:04 tmp/
drwxrwxr-x 1 nobody nogroup 646 6⽉月 26 00:11 vendor/
drwxrwxr-x 1 nobody nogroup 272 5⽉月 2 01:04 webroot/
composer.jsonが生成されてる
.gitignore標準装備
PSR-2定義
CakePHP3 - bake
# bin/cake bake
Welcome to CakePHP v3.0.7 Console
---------------------------------------------------------------
App : src
Path: /var/www/cake3/src/
---------------------------------------------------------------
The following commands can be used to generate skeleton code for your application.
Available bake commands:
- all
- behavior
- cell
- component
- controller
- fixture
- form
- helper
- migration
- migration_snapshot
- model
- plugin
- shell
- template
- test
By using `cake bake [name]` you can invoke a specific bake task.
いろいろ作れる。
うまく使うと便利。
ディレクトリ構成 /
コーディング標準
プログラムのルート
CakePHP2 CakePHP3
• ./app  から  ./src  に変更
ビューテンプレート(ctp)
CakePHP2 CakePHP3
• ./app/View  から  ./src/Template  に変更
設定ファイル
CakePHP2 CakePHP3
• ./app/Config/core.php  から  ./config/app.php  に変更  
• composer  install  で  app.default.php  から生成される  
• SCMにはコミットせずに管理  
• database.phpは廃止
PSR-4
composer.json
• 生成される  composer.json  にPSR-4関連の設定あり。  
• This  PSR  describes  a  specification  for  autoloading  classes  from  
file  paths.
PSR-2
• CakePHP3はPSR-2準拠。  
• This  guide  extends  and  expands  on  PSR-1,  the  basic  coding  
standard.
http://www.slideshare.net/yandod/psrphp新標準PSRに学ぶきれいなPHP
PSR-2
• CakePHP3はPSR-2準拠。  
• This  guide  extends  and  expands  on  PSR-1,  the  basic  coding  
standard.
http://www.slideshare.net/yandod/psrphp新標準PSRに学ぶきれいなPHP
PSR-2
個人的にちょっとキモい…
• CakePHP3はPSR-2準拠。  
• This  guide  extends  and  expands  on  PSR-1,  the  basic  coding  
standard.
http://www.slideshare.net/yandod/psrphp新標準PSRに学ぶきれいなPHP
PSR-2
すぐ慣れた
• CakePHP3はPSR-2準拠。  
• This  guide  extends  and  expands  on  PSR-1,  the  basic  coding  
standard.
http://www.slideshare.net/yandod/psrphp新標準PSRに学ぶきれいなPHP
モデル
モデルの構成
がっつり変わってる。
• CakePHP2
• クエリ実行: Modelクラス
• クエリ実行結果: 配列
• CakePHP3
• クエリ実行: Tableクラス
• クエリ実行結果: Entityオブジェクト
モデルの動作
CakePHP2 CakePHP3
ControllerModelView
クエリ 配列
クエリ 配列
クエリ 配列
配列
配列
配列
配列
配列
配列
find() find()
オブジェクト
オブジェクト
クエリ
クエリ
オブジェクト
オブジェクト
モデルの動作
CakePHP2 CakePHP3
ControllerModelView
クエリ 配列
クエリ 配列
クエリ 配列
配列
配列
配列
配列
配列
配列
find() find()
オブジェクト
オブジェクト
クエリ
クエリ
オブジェクト
全てのクエリが実行されて…
オブジェクト
モデルの動作
CakePHP2 CakePHP3
ControllerModelView
クエリ 配列
クエリ 配列
クエリ 配列
配列
配列
配列
配列
配列
配列
find() find()
オブジェクト
オブジェクト
クエリ
クエリ
オブジェクト
全てのクエリが実行されて…
配列を持ち回る
オブジェクト
モデルの動作
CakePHP2 CakePHP3
ControllerModelView
クエリ 配列
クエリ 配列
クエリ 配列
配列
配列
配列
配列
配列
配列
find() find()
オブジェクト
オブジェクト
クエリ
クエリ
オブジェクト
全てのクエリが実行されて…
配列を持ち回る
この段階ではクエリは実行されない
オブジェクト
モデルの動作
CakePHP2 CakePHP3
ControllerModelView
クエリ 配列
クエリ 配列
クエリ 配列
配列
配列
配列
配列
配列
配列
find() find()
オブジェクト
オブジェクト
クエリ
クエリ
オブジェクト
全てのクエリが実行されて…
配列を持ち回る
この段階ではクエリは実行されない
参照される時にクエリ実行
オブジェクト
モデルの動作
CakePHP2 CakePHP3
ControllerModelView
クエリ 配列
クエリ 配列
クエリ 配列
配列
配列
配列
配列
配列
配列
find() find()
オブジェクト
オブジェクト
クエリ
クエリ
オブジェクト
全てのクエリが実行されて…
配列を持ち回る
この段階ではクエリは実行されない
参照される時にクエリ実行
オブジェクト
出てくるのもオブジェクト
Table / Entity Object
Table / Entity Object
オブジェクト
Table / Entity Object
オブジェクト
オブジェクト
Table / Entity Object
オブジェクト
オブジェクト オブジェクト
オブジェクト化の恩恵
• PhpStormとか使うとプロパティやメソッドがサジェスト
される。
オブジェクト化の恩恵
• 若干のアノテーションは覚悟。
• PhpStormとか使うとプロパティやメソッドがサジェスト
される。
オブジェクト化の恩恵
• 前ページのアノテーションは実はもう少し工夫が必要。
後日補足
サジェストできない状態(波線)
アノテーション or use 指定で「User」が何か教えてあげる
or
バリデータ
もちろんオブジェクト
• 今風メソッドチェイン。
もちろんオブジェクト
• 今風メソッドチェイン。
• もちろんサジェスト可能。
もちろんオブジェクト
• 今風メソッドチェイン。
ステキ!!
• もちろんサジェスト可能。
CakePHP3
ステキ!
コントローラ & ビュー (含ヘルパ)
CakePHP3ウォークスルー
興奮するような変化は
ありませんでした…
まとめ
CakePHP3 まとめ
• セットアップの方法が変わった。
• Composer前提。
• モデル周りがオブジェクト化された。
• クエリは必要になってから実行されるのでパフォーマンス的に
有利。
• IDEのサジェスト機能を活用しよう。
• コントローラ、ビューまわりに大きな変化は無し。
• キレイに今風になって、イケてる感が高くなった。
• CakePHP史上、一番の改善アップデート。
使ってみよう!CakePHP3!
ありがとうございました
@tomzoh
デジタルサーカス(株)
懇親会も行きます。
声かけてください

More Related Content

PDF
behatエクステンションの作り方
PDF
とある事業の脱レガシー
PPTX
PHPCON fukuoka 2015 CodeIgniter update
PDF
phpspecで始めるBDD
PDF
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
PDF
Laravel5を使って開発してみた
PDF
Railsチュートリアルの歩き方 (第4版)
PPTX
PHP x AWS でスケーラブルなシステムをつくろう
behatエクステンションの作り方
とある事業の脱レガシー
PHPCON fukuoka 2015 CodeIgniter update
phpspecで始めるBDD
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
Laravel5を使って開発してみた
Railsチュートリアルの歩き方 (第4版)
PHP x AWS でスケーラブルなシステムをつくろう

Similar to CakePHP3ウォークスルー (20)

PDF
FukuokaPHP 3
PDF
PHP 8 で Web 以外の世界の扉を叩く
PPT
PHP, Now and Then 2011
PDF
Yet Another Plugins
PDF
PHPの今と未来を語る
PDF
CakePHP最新情報 PHPカンファレンス関西2012
PDF
PHPの今とこれから2015
PPT
Cakephp勉強会@福岡 発表資料
PDF
【PHPカンファレンス福岡】PHP 5.3 + CakePHP 1.3 → PHP 7 + CakePHP 3 移行を決めた話
PDF
FuelPHP活用事例
PPT
Cake Php ページ送り機能
PDF
PHPの今とこれから2016
PPT
Cakephp tokyo5
PDF
いまどき(これから)のPHP開発
PDF
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
PPT
Cakephp勉強会@tokyo #4
PPT
Cakephp plugin for_facebook
PDF
10分でわかるFuelPHP @ OSC2013 Nagoya
PDF
PHPの今とこれから2009
PDF
FutureSync 世界の開発者とコラボしよう
FukuokaPHP 3
PHP 8 で Web 以外の世界の扉を叩く
PHP, Now and Then 2011
Yet Another Plugins
PHPの今と未来を語る
CakePHP最新情報 PHPカンファレンス関西2012
PHPの今とこれから2015
Cakephp勉強会@福岡 発表資料
【PHPカンファレンス福岡】PHP 5.3 + CakePHP 1.3 → PHP 7 + CakePHP 3 移行を決めた話
FuelPHP活用事例
Cake Php ページ送り機能
PHPの今とこれから2016
Cakephp tokyo5
いまどき(これから)のPHP開発
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
Cakephp勉強会@tokyo #4
Cakephp plugin for_facebook
10分でわかるFuelPHP @ OSC2013 Nagoya
PHPの今とこれから2009
FutureSync 世界の開発者とコラボしよう
Ad

More from Tomoki Hasegawa (20)

PDF
Reading php terminal-gameboy-emulator
PDF
Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
PDF
とある受託ベンダの開発環境
PDF
iOS Developers Conference Japan 2016
PDF
エンジニアのお祭り
PDF
勉強会のこちら側とあちら側
PDF
tvOSでWebSocketを使う
PDF
「これを買っている人はこれも買っています」実装してみた PHP side
PDF
tvOSネイティブアプリを作る
PDF
「これを買っている人はこれも買っています」実装してみた
PDF
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
PDF
TestFlightみたいなのを自作する
PDF
PHPでスマホアプリにプッシュ通知する
PDF
Stargazer Meetup #1
PDF
PUSH通知証明書作成ツールを作った
PDF
PHPカンファレンス福岡に 行ってきた
PDF
はじめてのiOSアプリ開発 Swift対応版
PDF
AppStore申請を一式まるっと自動化する
PDF
PHPerのためのSwift入門
PDF
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
Reading php terminal-gameboy-emulator
Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
とある受託ベンダの開発環境
iOS Developers Conference Japan 2016
エンジニアのお祭り
勉強会のこちら側とあちら側
tvOSでWebSocketを使う
「これを買っている人はこれも買っています」実装してみた PHP side
tvOSネイティブアプリを作る
「これを買っている人はこれも買っています」実装してみた
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
TestFlightみたいなのを自作する
PHPでスマホアプリにプッシュ通知する
Stargazer Meetup #1
PUSH通知証明書作成ツールを作った
PHPカンファレンス福岡に 行ってきた
はじめてのiOSアプリ開発 Swift対応版
AppStore申請を一式まるっと自動化する
PHPerのためのSwift入門
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
Ad

CakePHP3ウォークスルー