CakePHPを簡単に使ってみました

こんばんは、笹亀です。

今日はひさしぶりに起きたら雨が降って少し涼しい朝でした。
そんなことも知らずに、前日に窓を開けて寝たおかげで、風邪気味です^^;

最近、CakePHPがどのようなものかが気になり、触ってみようかなぁとおもいました。
実際にCakePHPのマニュアルを参照しながら、
設置、設定、簡単なblog機能を最初の一歩として行ってみました。
今回はその内容についてご紹介させていただきます。

CakePHPとは、WEB開発用 PHP4/PHP5/PHP6のRADフレームワークです。

本家は「http://cakephp.org/」にあります。
海外のサイトで英語でかかれています^^;
いきなりハードルが高い感じでうち砕かされそうでしたが、
日本語でかかれているところがないかと探してみることにしました。
http://cakephp.jp/doc/index.html
やっぱりありました~~
ということで安心しました^^
今も翻訳中ですべてが日本語訳にできたわけではないみたいですが、
十分に内容を確認することはできます。

サイト上の「A. Cake ブログチュートリアル」でCakePHPの設定を行いながら、
blogを作るという箇所があったので、ここを参考にしながら作成していこうと思います。

CakePHPの設定を行いながら、特定のデータベースの全てのデータをリスト表示して、
リストの詳細データを表示するところまでを作成してみようとおもいます。

手順どおりに、ソースをダウンロードして・・・
ダウンロードしたファイルを展開して・・・
ブログのデータベースを作成して・・・
 ※私はちなみにMySQLで作成しました。

CakePHPのデータベースの設定ファイルを変更して・・・
Apacheのmod_rewriteを設定して・・・

ここらの設定関連の処理はマニュアルを見ながら全て設定していきました。

とりあえずここまでの設定が終わるとブラウザで確認することができます。
早速ブラウザでアクセスしました。

「Cake is able to connect to the database」ってことは、
データベースに接続できたらしいので、たぶん動いているということでしょう^^;
ここまで動いたのを確認後にマニュアルではブログを作っていくみたいです。

えっと・・
まずはmodelクラスを定義していきます。
view、add、edit、deleteの操作を行うための土台となるクラスらしいです。

app/models/post.php


<?php
class Post extends AppModel
{
    var $name = 'Post';
}
?>

ふむふむ・・
ここでアプリケーションのモデルを定義していくみたいです。

次はposts用のコントローラを作成する。
ここのコントロール部分が実際にview、add、edit、deleteなどのアクションコマンドを記述していくところらしいです。

実際に、indexアクションを追加して、ブラウザーでリストが表示できるかを確認。

/app/controllers/posts_controller.php


<?php
class PostsController extends AppController
{
    var $name = 'Posts';
    function index()
    {
        $this->set('posts', $this->Post->findAll());
    }
}
?>

マニュアルには、
「[$this->set('posts', $this->Post->findAll()) は set() という命令を使って、データをビューに渡しています。」と記述されていました。
$this->Post->findAll()はPostモデルのデータを全て取得するメソッドなのでしょう。
その取得したデータをset()でViewに渡しているということですね。
PHPのsmartyでいうとassignみたいなものなのでしょうか。

さて、作成できたのでブラウザで実行してみます。

エラーが出ていますね・・
内容をみると、「ファイルが無いよ」と怒られている。
次の章を確認してみるとviewを作成する箇所がありました。
では、さっそくviewファイルを作成します。

/app/views/posts/index.thtml


<h1>ブログの投稿</h1>
<table>
    <tr>
        <th>Id
        <th>タイトル</th>
        <th>作成日</th>
    </tr>
   <!-- ここで、 $posts 配列のループをまわして、投稿情報を printing out します。 -->
    <?php foreach ($posts as $post): ?>
    <tr>
        <td><?php echo $post['Post']['id']; ?></td>
        <td>
            <?php echo $html->link($post['Post']['title'], "/posts/view/".$post['Post']['id']); ?>
        </td>
        <td><?php echo $post['Post']['created']; ?></td>
    </tr>
    <?php endforeach; ?>
</table>

今度こそ、リスト一覧が表示されるはずです。

ここまでくると、詳細ページのリンク部分も作成したくなってきます。
先ほどの手順と同じように・・
コントローラにviewアクションを追加して、viewsフォルダにテンプレートを作成すると、このように簡単に詳細ページも作成できます。

CakePHPで簡単にリストと詳細ページまでを作成することができました。
この後もマニュアル通りに進んで作成していくと、
登録する処理、更新する処理、削除する処理を追加することができます。
気になる方は続きをぜひ作ってみてください。

このように、CakePHPを簡単に触りましたが、symfonyと違いを見つけたかったのですが・・違いまではさすがに感じることができませんでした。
もっと深く触ってみないとCakePHPのいいところと不便さなどは探せないのではないでしょうか。

個人的にPHPで何か作るときには本格的に使ってみようと思います><;
みなさんもぜひ、CakePHPを使用してみてはいかがでしょうか^^