先日、軽い気持ちでこちらの電子書籍版 FuelPHP 本のプレゼントに応募したところ見事に当選。どうもありがとうございます!
というわけで、この「はじめてのフレームワークとしてのFuelPHP 第2版」(入門編)に目を通しながら、軽く FuelPHP をいじってみましたので、その雑感などをまとめておきます。
FuelPHP の感想
ご存知の方は知っていると思いますが、FuelPHP は CodeIgniter の流れをくんで作られた PHP のフレームワークです。
CodeIgniter は、シンプルで動作も速く、使い勝手の良いフレームワークで、自分も以前はよく開発で使わせてもらうお気に入りツールだったのですが、ライセンス問題のゴタゴタで分かりにくくなってきた頃から気持ちが離れ、いつの間にか CakePHP 派に乗り換えてしまったという経緯があります。
そんなわけで、久しぶりに CodeIgniter をいじるような感覚で FuelPHP に触れてみましたが、とても扱いやすい印象を受けました。
元々自分が CodeIgniter で特に気に入っていた点は、
- セットアップの圧倒的簡単さ
- DB 必須でない
- MVC 構造にとらわれない作りも可能
- ファイル構造がシンプル
- とにかく軽くて早い
といったような、小中規模サイトを素早く作るのにとても都合が良い仕組みを持っていたからなのですが、まずその良い所がしっかりと引き継がれています。
それに加えて、PHP5 対応になっていたり、Auth パッケージ(待望の!)やパーサーパッケージが付属したり、よりかゆい所に手が届く機能が追加されているのが FuelPHP で、非常に仕上がってる感があります。
特に自分が便利だなあと思ったのは、Rest コントローラ。ざっくり言うと、URL にリクエストすると JSON や XML 形式でデータを返してくれる、いわゆる Web API を簡単に作れてしまう機能です。
「はじめてのフレームワークとしてのFuelPHP」のサンプルを参考に、簡単な Rest コントローラを作ってみます。
fuel/app/classes/controller/sample.php というファイルを作り、次のようなコードを書きます。
[php]
<?php
class Controller_Sample extends Controller_Rest
{
public function get_list()
{
// データを取得(ほんとはDBや外部APIからデータを持ってくるイメージ)
$data = array(
array(
‘name’ => ‘taro’,
‘email’ => ‘taro@example.com’,
),
array(
‘name’ => ‘jiro’,
‘email’ => ‘jiro@example.com’,
),
array(
‘name’ => ‘saburo’,
‘email’ => ‘saburo@example.com’,
),
);
// データを返す
$this->response($data);
}
}
[/php]
なんと、これだけで簡単な Web API として機能してしまうのです。
URL の拡張子部分がレスポンスのデータ形式になっているので、例えば次のような URL でアクセスした場合、
このように JSON 形式のデータが返されます。
[javascript]
[{"name":"taro","email":"taro@example.com"},{"name":"jiro","email":"jiro@example.com"},{"name":"saburo","email":"saburo@example.com"}]
[/javascript]
例えば次のような URL でアクセスした場合は、
このように XML 形式でデータが返ります。
[xml]
<?xml version="1.0" encoding="utf-8"?>
<xml><item><name>taro</name><email>taro@example.com</email></item><item><name>jiro</name><email>jiro@example.com</email></item><item><name>saburo</name><email>saburo@example.com</email></item></xml>
[/xml]
ちなみに、次の拡張子がサポートされているそうです。
- 拡張子(出力フォーマット)
- xml(XML)
- json(JSON)
- jsonp(JSONP)
- csv(CSV ファイル)
- php( eval() 可能な PHP コード)
- serialized(シリアライズされたデータ)
- html(返された文字列を出力)
今どきの Web システム構成は、フロントエンドは Ajax で、サーバサイドは json などをレスポンスする API にする構成が多いと思いますが、そんな用途にすごくはまりそうです。
本について
今回、FuelPHP をあまり抵抗もなく扱えたのは、CodeIgniter の経験があったことはもちろんありますが、「はじめてのフレームワークとしてのFuelPHP」の解説がとても良かったのも大きな要因です。
この本はフレームワーク初心者の方から対象にされているので、フレームワークや MVC の概念、PHP と FuelPHP のコードの比較といった基本的な説明から始まり、FuelPHP の基礎知識はもちろん、開発する上での勘所のような話題まで丁寧に盛り込まれています。分かりやすい上に、読み物としても面白かったりします。
自分は始めに CodeIgniter との差異を把握するため、フォルダ構成や MVC のそれぞれ書き方といった部分を集中的に読みましたが、とても体系的にまとまっていてすごく理解が進みました。
今回読んだのは「入門編」だったのですが(他に「環境構築編」「実践編」がある)、フレームワーク初心者から中級者の方はもちろん、上級者の方でも FuelPHP の基礎を把握するのに良い一冊ではないでしょうか。
プレゼント頂いた @kenji_s さん、ありがとうございました!