昨日(6/25)CakePHP2.0 勉強会@Tokyoに参加してきました!

CakePHP2.0 勉強会@Tokyoに参加してきました!
会場をお借りした、トライコーン株式会社様、ありがとうございました!


下記記事に関して、間違いがあると思うので、ご意見・ご感想・指摘等ありましたらお気軽にコメント、はてなブックマーク、RTお願いします!

Introduction

  • 電源タップがやはり少ないらしい。
  • 無線LANも会場のをお借りしましたが、他の回線があれば嬉しいらしい。一箇所に集中してしまうと回線が遅くなりますからね。

Keynote

[twitter:@yando]

  • candycane 開発は地獄だった。
  • 人柱(開発者)絶賛募集中だそうです。
  • 元ネタのコードを参考にした。リファクタリングが進んでいないので、そこで貢献していただけると嬉しいみたい。
  • 個人的な意見として、元のフレームワークCakePHP(1.2?)なので参入障壁は低いと思いました。

CakePHP2 の特徴

[twitter:@hiromi2424]

CakePHP2.0について
  • 互換性を保持している。
  • 移行も簡単にできる。
  • 疎結合
  • リクエストとレスポンスをオブジェクト化
  • Authは分割された 認証と承認
    • Authenticate
    • Authorize
  • ObjectCollectionの登場
  • 割といろいろな書式を読むよ!!
  • Lazy Loading
    • モデル読み込みの遅延 <- 重かった <- LazyModel(PlugIn)
    • コアでLazyLoadingをサポート。
  • PHPUnitの利用
  • CakePHP2開発陣は前方互換な方法を保持することに尽力している。
  • LazyLoadingする、しないの指定ができる。
ハンズオン
  1. DB作成
  2. ./app/Console/cake schema create < 私はここまでしか追えなかった、残念!
  3. bake
  4. 完了!
  • CakePHP2になって、$formが$this->Formになった。
  • AuthComponentについて、2.0で手が入った。
    • コンポーネント指定時に、設定値を入れることができる。<- 1.3から?
    • デフォルトでハッシュ化しなくなった。
    • loginにて$this->Auth->login();を記載しないといけない。
    • 半自動になった。
  • RequestオブジェクトでHTTPのメソッドを判別できるようになった。
CakePHP2.0まとめ
  • 旧バージョンと似ている感じで組める。
  • AuthComponentの設定が必要な箇所が増えたので注意。
    • login
    • passwordのハッシュ化
    • その他諸設定
今日のセッションの振り返り+α
  • バリデーションlastの扱いが変わった。
  • 2.0からバリデーションエラーがすべて表示されるようになった。
  • ページネータがコンポーネント化された
  • 例外を利用するようになった
    • Configのcore.phpのなかで、例外と表示の対応ができるようになり、エラーごとに表示を設定できるようになった。( try catch 書かなくて済むとか、なるほどと思った。 )
  • gettextはデフォルトでechoされなくなった。
  • FormヘルパーにpostLinkができて、使える。
  • $this->request->is を拡張して、様々な判定に使えるようになる。(ktaiなど。)
  • 1.3 -> 2.0
    • コピーして、upgradeシェルを走らせ、Configの設定をすればできる。後は、Auth。

CakePHP2.0 で初めてのテスト

[twitter:@mon_sat]イベント主催者

  • 会社がテストを書かせてくれない人もいる。
  • テストを書くとはメンテナンスがしやすい。
  • CakePHP2.0ではPHPUnitを利用するようになる。
  • pearでインストールできる。
  • cake bake fixture でfixtureを作成できる。
  • テスト書いていないとエラーになる。(テスト未記述エラー)
  • SimpleTestからPHPUnitに変わったため、メソッド名が変わる。CakePHP2.1で削除されてしまう。
  • bake test controller コントローラのテストが生成できる。
  • でも、生成されたコントローラのテストは動かない。バギー!
  • セッション、クッキーがからむテストについてどうするのか質問があったが、できるみたい。未実装?

ロード第1章

[twitter:@cakephper]

  • $this->request->is('post')の拡張
    • $this->request->addDetector で拡張できる。
  • http://kanael.net 作りました!
  • 今日の話の内容
  • App::build 標準以外のPATHを読み込む。
    • キーの名前が2.0で変わる。
  • App::import
    • App::import('Controller', 'UserGroup');など
    • パフォーマンスの問題で、2.0から階層を再帰検索しないようになった。
    • App::buildで正しく記載する。
  • ファイルのIMPORT
    • 以前はすぐに読み込まれたが、今後はクラス利用時に遅延で読みこむようになった。
  • AutoLoading
    • __autoload() 未定義のクラスを利用しようとした際に呼ばれるでもできる。
    • App::uses() でクラスの宣言がなされ、autoloadで利用されるようになる。
    • App::load() が spl_autoload_register() が呼び出される。
    • 詳しくはパーフェクトPHPを読んでください。

パーフェクトPHP (PERFECT SERIES 3)

パーフェクトPHP (PERFECT SERIES 3)

  • LazyLoading
    • インスタンス生成のタイミングを遅らせる。
    • 以前は、すぐに生成されていた。これはパフォーマンス上遅い。
    • 今後は、$this->Modelにアクセスした瞬間に、インスタンスが生成される。
    • マジックメソッドを利用している。__get が呼ばれる。
  • まとめ
    • 速くなる!
    • App::importで再帰的に読み込まれなくなったので注意。
    • http://www.facebook.com/CakeRadioGaGa で僕と握手!
    • 似たサイトが発表されたがメモを取り損ねた!!誰か教えてください!!!

あにこれ

これCakePHP。アニメのアグリゲーションサイト。ここまで作りこむの、本当にすごいと思います!
後、新海誠

まとめ

  • CakePHP2.0の書式は1.3と似ているので、1.3を知っていれば組めるんじゃないかと思います。
  • CakePHP2.0のテストについて、修正して名を馳せるチャンスですよ!!
  • LTでも準備しないと失敗する。(本当に酒の勢いを借りないとあののりはなかった。)


参加された皆様、先日は本当にありがとうございました!