Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CakePHP2と3の違い

 CakePHP2と3の違い

CakePHP2と3の違い

sakuragawa

April 20, 2016
Tweet

More Decks by sakuragawa

Other Decks in Programming

Transcript

  1. CakePHP2と3の違い
    2016/4/13

    View Slide

  2. 自己紹介
    株式会社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

    View Slide

  3. 3
    使ってますか?

    View Slide

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

    View Slide

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

    View Slide

  6. 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

    View Slide

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

    View Slide

  8. デザインがおしゃれに
    8

    View Slide

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

    View Slide

  10. 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
    配列地獄からは解消される!

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide