Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

CakePHP3ウォークスルー

5,470 views

Published on

PHPカンファレンス福岡2015の発表資料です。

Published in: Software
  • Be the first to comment

CakePHP3ウォークスルー

  1. 1. CakePHP3 ウォークスルー デジタルサーカス(株)長谷川智希
  2. 2. 長谷川智希 とも き @tomzoh
 とむぞう 開発系趣味 その他趣味 Webサイト開発, iOSアプリ開発 レンタルカートレース, 電子工作(mbed), … TOMZOH お仕事 スマホアプリ受託開発 Mgr デジタルサーカス(株) 副団長CTO 東京都港区南青山(表参道) Facebook CakePHP iOS
  3. 3. 長谷川智希 とも き @tomzoh
 とむぞう 開発系趣味 その他趣味 Webサイト開発, iOSアプリ開発 TOMZOH お仕事 スマホアプリ受託開発 Mgr デジタルサーカス(株) 副団長CTO レンタルカートレース 東京都港区南青山(表参道) Facebook CakePHP iOS
  4. 4. http://www.amazon.co.jp/dp/4798039519 Webアプリ開発を加速する CakePHP2定番レシピ119
  5. 5. デジタルサーカス(株) ・ Webサイト受託開発 ・ スマホアプリ受託開発
 
 ・ 自社サービス (PHP, Drupal, CakePHP) (iOS, Android)
 
 (http://appbuilder.jp) Twitter: @tomzoh 東京都港区南青山(表参道)
  6. 6. デジタルサーカス(株) ・ Webサイト受託開発 ・ スマホアプリ受託開発
 
 ・ 自社サービス (PHP, Drupal, CakePHP) (iOS, Android)
 
 (http://appbuilder.jp) Twitter: @tomzoh 東京都港区南青山(表参道)
  7. 7. Twitter: @tomzoh
  8. 8. Twitter: @tomzoh
  9. 9. 今日のテーマ: CakePHP3ウォークスルー
  10. 10. の前に…
  11. 11. 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
  12. 12. 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
  13. 13. 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
  14. 14. 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
  15. 15. 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
  16. 16. 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
  17. 17. 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
  18. 18. 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
  19. 19. 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
  20. 20. 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
  21. 21. 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
  22. 22. 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
  23. 23. 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
  24. 24. 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
  25. 25. 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サポート終了了発表
  26. 26. 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
  27. 27. 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
  28. 28. 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
  29. 29. 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
  30. 30. 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
  31. 31. 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
  32. 32. 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
  33. 33. 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
  34. 34. 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
  35. 35. 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
  36. 36. 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
  37. 37. 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+
  38. 38. CakePHP3 • PHP5.4+ • トレイト, 配列短縮構文 • Composer必須 • zipファイルをダウンロードしないでOK • PSR-2, PSR-4 • オブジェクト化。特にORマッパ。 • 「配列地獄」からの脱出
  39. 39. CakePHP3 • PHP5.4+ • トレイト, 配列短縮構文 • Composer必須 • zipファイルをダウンロードしないでOK • PSR-2, PSR-4 • オブジェクト化。特にORマッパ。 • 「配列地獄」からの脱出 イケてる感(個⼈人の感想です)
  40. 40. CakePHP3ウォークスルー
  41. 41. CakePHPセットアップ
  42. 42. 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
  43. 43. 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を作る
  44. 44. 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前提じゃない箇所の修正 (‘;ω;)ウッ
  45. 45. 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
  46. 46. 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する。
  47. 47. 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定義
  48. 48. 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. いろいろ作れる。 うまく使うと便利。
  49. 49. ディレクトリ構成 / コーディング標準
  50. 50. プログラムのルート CakePHP2 CakePHP3 • ./app  から  ./src  に変更
  51. 51. ビューテンプレート(ctp) CakePHP2 CakePHP3 • ./app/View  から  ./src/Template  に変更
  52. 52. 設定ファイル CakePHP2 CakePHP3 • ./app/Config/core.php  から  ./config/app.php  に変更   • composer  install  で  app.default.php  から生成される   • SCMにはコミットせずに管理   • database.phpは廃止
  53. 53. PSR-4 composer.json • 生成される  composer.json  にPSR-4関連の設定あり。   • This  PSR  describes  a  specification  for  autoloading  classes  from   file  paths.
  54. 54. 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
  55. 55. 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
  56. 56. 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
  57. 57. 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
  58. 58. モデル
  59. 59. モデルの構成 がっつり変わってる。 • CakePHP2 • クエリ実行: Modelクラス • クエリ実行結果: 配列 • CakePHP3 • クエリ実行: Tableクラス • クエリ実行結果: Entityオブジェクト
  60. 60. モデルの動作 CakePHP2 CakePHP3 ControllerModelView クエリ 配列 クエリ 配列 クエリ 配列 配列 配列 配列 配列 配列 配列 find() find() オブジェクト オブジェクト クエリ クエリ オブジェクト オブジェクト
  61. 61. モデルの動作 CakePHP2 CakePHP3 ControllerModelView クエリ 配列 クエリ 配列 クエリ 配列 配列 配列 配列 配列 配列 配列 find() find() オブジェクト オブジェクト クエリ クエリ オブジェクト 全てのクエリが実行されて… オブジェクト
  62. 62. モデルの動作 CakePHP2 CakePHP3 ControllerModelView クエリ 配列 クエリ 配列 クエリ 配列 配列 配列 配列 配列 配列 配列 find() find() オブジェクト オブジェクト クエリ クエリ オブジェクト 全てのクエリが実行されて… 配列を持ち回る オブジェクト
  63. 63. モデルの動作 CakePHP2 CakePHP3 ControllerModelView クエリ 配列 クエリ 配列 クエリ 配列 配列 配列 配列 配列 配列 配列 find() find() オブジェクト オブジェクト クエリ クエリ オブジェクト 全てのクエリが実行されて… 配列を持ち回る この段階ではクエリは実行されない オブジェクト
  64. 64. モデルの動作 CakePHP2 CakePHP3 ControllerModelView クエリ 配列 クエリ 配列 クエリ 配列 配列 配列 配列 配列 配列 配列 find() find() オブジェクト オブジェクト クエリ クエリ オブジェクト 全てのクエリが実行されて… 配列を持ち回る この段階ではクエリは実行されない 参照される時にクエリ実行 オブジェクト
  65. 65. モデルの動作 CakePHP2 CakePHP3 ControllerModelView クエリ 配列 クエリ 配列 クエリ 配列 配列 配列 配列 配列 配列 配列 find() find() オブジェクト オブジェクト クエリ クエリ オブジェクト 全てのクエリが実行されて… 配列を持ち回る この段階ではクエリは実行されない 参照される時にクエリ実行 オブジェクト 出てくるのもオブジェクト
  66. 66. Table / Entity Object
  67. 67. Table / Entity Object オブジェクト
  68. 68. Table / Entity Object オブジェクト オブジェクト
  69. 69. Table / Entity Object オブジェクト オブジェクト オブジェクト
  70. 70. オブジェクト化の恩恵 • PhpStormとか使うとプロパティやメソッドがサジェスト される。
  71. 71. オブジェクト化の恩恵 • 若干のアノテーションは覚悟。 • PhpStormとか使うとプロパティやメソッドがサジェスト される。
  72. 72. オブジェクト化の恩恵 • 前ページのアノテーションは実はもう少し工夫が必要。 後日補足 サジェストできない状態(波線) アノテーション or use 指定で「User」が何か教えてあげる or
  73. 73. バリデータ
  74. 74. もちろんオブジェクト • 今風メソッドチェイン。
  75. 75. もちろんオブジェクト • 今風メソッドチェイン。 • もちろんサジェスト可能。
  76. 76. もちろんオブジェクト • 今風メソッドチェイン。 ステキ!! • もちろんサジェスト可能。
  77. 77. CakePHP3 ステキ!
  78. 78. コントローラ & ビュー (含ヘルパ)
  79. 79. 興奮するような変化は ありませんでした…
  80. 80. まとめ
  81. 81. CakePHP3 まとめ • セットアップの方法が変わった。 • Composer前提。 • モデル周りがオブジェクト化された。 • クエリは必要になってから実行されるのでパフォーマンス的に 有利。 • IDEのサジェスト機能を活用しよう。 • コントローラ、ビューまわりに大きな変化は無し。 • キレイに今風になって、イケてる感が高くなった。 • CakePHP史上、一番の改善アップデート。
  82. 82. 使ってみよう!CakePHP3!
  83. 83. ありがとうございました @tomzoh デジタルサーカス(株) 懇親会も行きます。 声かけてください

×