この記事の所要時間: 約 1分20秒
FuelPHPは、2011年の7月にバーション1.0がリリースした
最新のPHPフレームワークです。
特徴は、MongoDBやMySQLなどをサポートしていて
RESTfulなコントローラーもすぐに作成できます。
また、軽量高速です。
FuelPHP公式サイト
http://fuelphp.com/
実際に、ちょこっとプログラムを書いて、使い方をまとめておきたいと思います。
下記のコマンドで、さくっとインストールされます。
# curl get.fuelphp.com/oil | sh
次に、動かしたいディレクトリに移動して、コマンドを入力すると
プロジェクトが作成出来ます。
# oil create 'プロジェクト名'
fuelってディレクトリが作りたければ
# oil create fuel
です。
こんな感じにファイルが展開されます。
http://localhost/fuelPHP/public/
公開ポイントにアクセスすると、FuelPHPの画面がでます。
主要な設定ファイルは、3つあります。
fuel/app/config ディレクトリにあります。
config.php
メインの設定ファイル
db.php
データベース設定ファイル
routes.php
ルーティング設定ファイル
config.phpを下記のように書き換えます。
<?php /** * Fuel is a fast, lightweight, community driven PHP5 framework. * * @package Fuel * @version 1.0 * @author Fuel Development Team * @license MIT License * @copyright 2010 - 2012 Fuel Development Team * @link http://fuelphp.com */ /** * If you want to override the default configuration, add the keys you * want to change here, and assign new values to them. */ return array( 'index_file' => false, 'profiling' => false );
http://example.jp/index.php/bbs/を http://example.jp/bbs/で
アクセス可能になります。
.htaccessで、mod_rewriteの設定がされています。
Hello Worldの表示
やっぱり、はじめのプログラムと言えば、Hello Worldの表示なので
サンプルを作ってみます。
まず、routes.phpのhelloの記述をコメントアウトします。
<?php return array( '_root_' => 'welcome/index', // The default route '_404_' => 'welcome/404', // The main 404 route // 'hello(/:name)?' => array('welcome/hello', 'name' => 'hello'), );
fuel/app/classes/controller/hello.php ファイルを作成します。
<?php class Controller_Hello extends Controller { public function action_index() { return 'Hello World!!'; } }
http://localhost/fuelphp/public/hello/index
にアクセスすると、Hello World!!が表示されます。
実行結果
このサンプルは、Controllerだけで表示しているので
次は、Viewを使った表示にしてみます。
fuel/app/views/hello.php ファイルを作成します。
Viewだけ場所が違うので、始めは戸惑います^^
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Hello world</title> </head> <body> <p>Hello World!!</p> </body> </html>
fuel/app/classes/controller/hello.php 先ほどのコントローラーファイルを書き換えます。
<?php class Controller_Hello extends Controller { public function action_index() { return View::forge('hello'); } }
http://localhost/fuelphp/public/hello/index
に再度アクセスすると、Hello World!!が表示されます。
実行結果
結果は同じですが、Viewを使った表示になっています。
MVCモデル
コードをモデル (Model)、ビュー (View)、コントローラ (Controller) の 3つの役割に分割して作成します。コントローラーは、アプリケーション全体の制御をします。
モデルは、データの管理をします。
ビューは、画面表示を行います。
それぞれ、MVCに分けてコーディングしていきます。
URLの構造
http://example.jp/コントローラ/メソッド [/パラメータ 1[/パラメータ 2[/...]]]
1番目の URI セグメントが、実行されるコントローラ名
2番目の URI セグメントが、実行されるコントローラのメソッド名
3番目以降の URI セグメントが、メソッドに渡される引数
fuel/app/classes/controller/blog.php ファイルを作成します。
<?php class Controller_Blog extends Controller { public function action_category($cat = 'php',$page = '1') { return __FILE__ . '<br />' . $cat . '<br />' . $page; } }
http://localhost/fuelphp/public/blog/category/php/1
実行結果
http://localhost/fuelphp/public/blog/category/perl/2
実行結果
それぞれに、引数の内容が表示されています。
Restコントローラー
fuel/app/classes/controller/weather.php ファイルを作成します。
<?php class Controller_Weather extends Controller_Rest { public function get_today() { //クエリ文字列から地名を代入 $location = Input::get('loc'); $weather = 'fine'; //レスポンスを返す $this->response(array( 'location' => $location, 'weather' => $weather, )); } }
パラメータを付けてアクセスします。
http://localhost/fuelphp/public/weather/today.json?loc=tokyo
実行結果
Restコントローラーを使うと
簡単に、jsonやxml、CSVで出力することが出来ます。
とっても便利です!
拡張子を指定すると、自動で指定したフォーマットで出力されます。
xml XML
json JSON
jsonp JSONP
csv CSVファイル
MongoDB
app/config/db.php の設定をします。
<?php /** * Use this file to override global defaults. * * See the individual environment DB configs for specific config information. */ return array( 'active' => 'mongo', 'mongo' => array( 'default' => array( 'hostname' => 'localhost', 'database' => 'blog', 'username' => 'user', 'password' => 'pass', ), ), );
fuel/app/classes/controller/blog.php ファイルを変更します。
<?php class Controller_Blog extends Controller { public function action_index() { $mongodb = \Mongo_Db::instance(); // 挿入 $results = $mongodb->insert('posts', array('name' => '名前', 'contents' => 'コンテンツ')); // データ取得 $results = $mongodb->get('posts'); var_dump($results); return $results; } }
http://localhost/fuelphp/public/blog/
実行結果
簡単に、MongoDBにも接続できます。
まとめ
FuelPHPなどのフレームワークを使うと
保守性も上がるし、モジュールの流用なども簡単にできるようになります。
また、jsonなどのRestコントローラーは、簡単に作成出来るので
わざわざコーディングしなくても良くなります。
脆弱性の対応なども、フレームワーク側で吸収できます。
DBの接続なども簡単なので、FuelPHPを使っていきたいと思います♪
参考図書
はじめてのフレームワークとしてのFuelPHP
http://tatsu-zine.com/books/fuelphp1st
[...] 参考サンプルコード http://blog.bot.vc/2013/01/fuelphp/ [...]
[...] 【参考】 http://blog.bot.vc/2013/01/fuelphp/ [...]