Slide 1

Slide 1 text

CakePHP2と3の違い 2016/4/13

Slide 2

Slide 2 text

自己紹介 株式会社Fusic 技術開発部 マネージャー 櫻川 幸三 https://github.com/kozo https://github.com/fusic http://qiita.com/kozo http://qiita.com/organizations/fusic CakePHP利用歴:8年程度(CakePHP1.1から) Cake3用のプラグイン初リリース 2014/11/13(Cake3のリリースは2015/3) 2

Slide 3

Slide 3 text

3 使ってますか?

Slide 4

Slide 4 text

CakePHP3メリット PHP自体のバージョン 速度、使える機能が多い。 composer Cake自体、ライブラリのバージョン管理が容易 autoload namespace PSR-2 trait Cake自体を含めた可読性が上がった デザインが少しかっこよくなった CakePHP2よりはましになった モデル周りが一新 出来ることが増えた!拡張性が大幅に向上! 4

Slide 5

Slide 5 text

5 新しい方が楽しい! モダンな書き方をしたい!

Slide 6

Slide 6 text

PHP等のバージョン変更 CakePHP2 CakePHP3 PHP 5.3以上 5.5.9以上 Extension mcrypt intl mbstring openssl(オプション) PostgreSQL 7以上 ??? MySQL 4 & 5 5.1.10以上 SQL Server 2005以上 2008以上 SQLite ??? 3 6 • PHP5.4 • trait • short array syntax([]) • short open tag(=) • PHP5.5 • yield • password_hash • finally

Slide 7

Slide 7 text

composer経由でインストールが楽 composerが標準で対応 CakePHP自体 様々なライブラリ autoload(PSR-4)に対応 ファイル名 ディレクトリ構造 namespace PSR-2準拠 7 composer create-project --prefer-dist cakephp/app [アプリ名]

Slide 8

Slide 8 text

デザインがおしゃれに 8

Slide 9

Slide 9 text

モデル周りが大幅リニューアル! QueryBuilder Table Entity 9

Slide 10

Slide 10 text

QueryBuilder CakePHP2 10 $query = [ ‘conditions’ => [ ‘条件A’, ‘条件B’ ], ‘order’ => [ ‘ソート条件A’, ‘ソート条件B’ ], ‘fields’ => [‘取得フィールド’] ] $this->User->find(‘all’, $query); $this->Users->find() ->where(条件A) ->where(条件B) ->order(ソート条件A) ->order(ソート条件B) ->select(取得フィールド) ->all() • CakePHP3 配列地獄からは解消される!

Slide 11

Slide 11 text

Table、Entity Table DBのテーブルへアクセスする CakePHP2のModelクラスに近い動きをする 11 • Entity • DBのテーブル1レコードを表す • カラムのデータ自体の加工等を担当する • CakePHP2までのModelクラスが、 TableとEntityの2つに分離された Tableクラス Entityクラス

Slide 12

Slide 12 text

デメリット 学習コスト namespace QueryBuilder プラグイン周り プラグイン周りは全滅 Controller、View周りは大きくは変更されてない Model関係は0から作りなおす必要がある PHP自体のバージョンが高い 5.5.9以上 12

Slide 13

Slide 13 text

まとめ 学習コストはあるが、 覚えてしまえば拡張性が非常に高く使いやすい! やっとモダンなフレームワークの仲間入り! 新しいものは楽しい! 13

Slide 14

Slide 14 text

ご清聴ありがとうございました Fusicはテクノロジーが 好きなエンジニアを募集しています https://fusic.github.io 14