CakePHP3のdev preview1がリリースされたのでちょっと試してみた


みなさんこんにちは!

ついにCakePHP3のdev preview 1が出ましたね!
CakePHP 3.0.0 dev preview 1 released

テンション上がったので少しですが試してみようと思います。
CakePHP自体の開発スピードが最近上がってきたと感じるのでわくわくしてます。
それでは一緒にいじっていきましょう!

CakePHP3をインストールする

CakePHP3からComposerが必須になったのでComposerからインストールします。

これでインストール完了です!簡単!ひゃっほーい!

CakePHP2からはdatabase.phpがなくなり、app.phpに統合されたのでapp.phpからデータベースの設定を行いましょう。
これでとりあえずインストール完了です。
おそらくCakePHP3の安定版ではデータベース設定もbake出来るとは思うのですが今のところbakeが動かないようなので手動で設定しました。

これでいつもの緑画面が出てきたと思います。(DebugKitは気分的に入れてみました。オールグリーン、気持ちいいので)

データベースには以下のテーブルとデータを挿入しました。

次で実際に触ってみます。

コードを書いてみる

今回やることはさきほど入れたデータを表示したりCakePHP3から実装されたEntityやRepositoryを使って遅延評価を行ったりしてみたいなぁと思います。

それでは早速書いていきましょう。

まずはPostsController.phpから書いていきます。

PostsController.php

namespaceとかuse使ってる部分がモダンw
見ればわかるとは思いますが、Postsテーブルのインスタンスを作り、全件取得しています。
それをViewにpostsという変数名でオブジェクトを流し込んでいます。
namespaceにはそのファイルの場所名を書きます。今回のControllerであればApp/Controller以下にあるので上記のようになっています。

それではModelを書いていきましょう。
僕もまだEntityやRepositoryは厳密にどのようなものか理解出来ていないのですが、Entityにはモデルのロジックを、Repositoryにはデータベースのリレーションやバリデーションを書いていくようです。(あんまわかってない。誰か教えて!)

まずRepositoryのほうから作ります。

App/Model/Repository/PostsTable.php

今回はリレーションやバリデーションはかけないので何も書きません。
次にEntity

App/Model/Entity/Post.php

Entityのほうには後から関数を定義してみようと思います。

そして最後にView
これでとりあえず動くはずです。

App/View/Posts/index.ctp

これで以下の画像のように数字が出てくるはずです。

foreach$postsをイテレートしてidを表示してみました。もちろんidの部分をtitlecontentに変えればそれを表示することが出来ます。

Viewに渡されたオブジェクトからEntityモデルを叩く

今回はViewに$postsという変数名でオブジェクトを渡しましたが、ここからPostEntityを叩くことが出来ます。

App/Model/Entity/Post.phpにメソッドを追加します。

App/Model/Entity/Post.php

そしてViewも変えます。

App/View/Posts/index.ctp

これで以下のような表示が出来ます。

Entityのほうでgetから始めた関数はViewのオブジェクト側でgetを除いたアンダースコア記法で呼び出せるのです!
これ超ベンリ!感動しちゃいました。Railsの感覚に近い。。

最後に

僕も対してわかっていないのでとりあえず動かしてみてこういうことが出来る、こういうことが出来なくなった、というのを1つずつ確認している段階です。
また開発バージョンなのでこれから変更がかかる可能性があります。
開発が終わるのがいつになるかわかりませんが、少しずつでも追っかけていると移行が早く出来て便利かもしれませんね!

CakePHPをこれから始めたい人は持っておくといいかも

Webアプリ開発を加速する CakePHP2定番レシピ119
長谷川 智希
秀和システム
売り上げランキング: 65,741

参考文献

CakePHP3公式APIドキュメント
CakePHP3公式BOOK – Table objects
CakePHP3公式BOOK – Entities
第3回 週末ランサーズにてCakePHP3についての講演をしました

更新情報はFacebookページで!

ブログの更新、読んで役立つ他ブログの記事などを更新しています。




関連のある記事


質問があればこちらからどうぞ