最先端PHPフレームワークLithiumのチュートリアルを実際に体験してみました。

MongoDB等のデータベースを使用したPHPフレームワークが無いかと調べたところ、通称CakePHP3と呼ばれるフレームワークLithiumがあるのを知り、実際にインストールしてみる事にしました。

チュートリアル(ブログの様な記事投稿システム)もあるので今回実際に体験してみましたので、簡単に流れを記事にしました。

チュートリアル
http://rad-dev.org/lithium/wiki/drafts/blog-tutorial

環境

OS:CentOS5.4
PHP:5.3.1
MongoDB:1.2.2
Lithium:0.9


lithiumのダウンロード&解凍

最新版はlithium-0.9になりますね。

wget http://d10xg45o6p6dbl.cloudfront.net/projects/l/lithium/lithium-0.9.zip
unzip lithium-0.9.zip
mv lithium-0.9 lithium


apacheのドキュメントルート設定を、解凍したディレクトリ内にあるapp/webrootに設定します。
(apacheのrestartも忘れずに)
また、MongoDBをインストールしMongoDBのプロセスも立ち上げておきます。


ブラウザからアクセスすると下記の画面が現れます。


0.8と若干画面が変わりましたね。



チュートリアルその1

まず、さきほどの初期画面に表示されている指示に従います。

chmod -R 0777 /var/www/lithium/app/resources


その後チュートリアルに戻り下記のコマンドでphpからMongoDBを操作するプラグインをインストールします。

sudo pecl install mongo


app/config/connections.phpに下記を追加します。

// MongoDB Connection
    Connections::add('default', array('type' =>  'MongoDb', 'database' => 'blog', 'host' => 'localhost'));


app/config/bootstrap.phpの46行目のコメントを外します。

require __DIR__ . '/connections.php';


すると初期画面が下記のようになり、初期設定が完了した事がわかります。



チュートリアルその2

実際にMVCを作成するプロセスです。

まずはModelを作成します。
app/models/Post.phpを作成し下記の記述をします。

<?php
    namespace app\models;

    class Post extends \lithium\data\Model {
    }

これでModelの作成完了です。


次にControllerの作成です。
app/controllers/PostsController.phpを作成し下記の記述をします。

<?php
namespace app\controllers;
use app\models\Post;

class PostsController extends \lithium\action\Controller {

    public function index() {
        $posts = Post::all();
        return compact('posts');
    }
    public function add() {
        $success = false;
        if ($this->request->data) {
            $post = Post::create($this->request->data);
            $success = $post->save();
        }
        return compact('success');
    }
}

これでControllerの作成完了です。


次にViewを作成します。

まずブログの記事一覧を表示する、index.html.phpを作成します。

app/views/posts/index.html.php

<?php foreach($posts as $post): ?>
<article>
<h1><?=$post->title ?></h1>
<p><?=$post->body ?></p>
</article>
<?php endforeach; ?>

次にブログの書込み用の画面を作成します。

app/views/posts/add.html.php

<?php if ($success): ?>
<p>Post Successfully Saved</p>
<?php endif; ?>
<?=$this->form->create(); ?>
<?=$this->form->field('title');?>
<?=$this->form->field('body', array('type' => 'textarea'));?>
<?=$this->form->submit('Add Post'); ?>
<?=$this->form->end(); ?>

チュートリアル(その3)

MVCの作成は終わりました。
実際にブラウザからアクセスしてみたいと思います。

http://sample.com/posts/add
下記の様な投稿画面が表示されました。
綺麗なフォームが簡単に生成されるヘルパーの様ですね。
入力欄が大きいので、iPhoneからの投稿も楽でした。


http://sample.com/posts
下記は記事一覧画面ですね。


まとめ

Lithiumはファイル数やディレクトリの配置を見てとても軽量で薄い印象を受けましたが、それと同時にパワフルなフレームワークだなと思いました。
MongoDBを採用しているのも評価出来ます。
後は日本語のノウハウが欲しいところです!

時間がある時に少しずつ勉強していきたいと思います。

追記

mixiのコミュニティを作成してみました。
情報交換したいです。
宜しくお願いしますー。
http://mixi.jp/view_community.pl?id=4975003


[PR]Spreeの情報を集めています。

ECを持ちたい方、仕事でECを使いたい方向けのコミュニティサイトです。
このサイトでは世界で最も使用されているECの1つであるSpreeについての情報を提供しています。
http://spreecommerce.jp/