狠狠撸

狠狠撸Share 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
今日のテーマ:
颁补办别笔贬笔3ウォークスルー
の前に…
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マッパ。
? 「配列地獄」からの脱出
イケてる感(個?人の感想です)
颁补办别笔贬笔3ウォークスルー
颁补办别笔贬笔セットアップ
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
ステキ!
コントローラ & ビュー (含ヘルパ)
颁补办别笔贬笔3ウォークスルー
興奮するような変化は
ありませんでした…
まとめ
CakePHP3 まとめ
? セットアップの方法が変わった。
? Composer前提。
? モデル周りがオブジェクト化された。
? クエリは必要になってから実行されるのでパフォーマンス的に
有利。
? IDEのサジェスト機能を活用しよう。
? コントローラ、ビューまわりに大きな変化は無し。
? キレイに今風になって、イケてる感が高くなった。
? CakePHP史上、一番の改善アップデート。
使ってみよう!颁补办别笔贬笔3!
ありがとうございました
@tomzoh
デジタルサーカス(株)
懇親会も行きます。
声かけてください

More Related Content

颁补办别笔贬笔3ウォークスルー