Slim2+EloquentORM4で簡単APIスタブ

を作った

composer.json

{
    "require": {
        "slim/slim": "~2.0",
        "illuminate/database": "~4.0"
    }
}
$ composer install

して準備完了
ファイル構成は以下の様な感じ

  • app/
    • models/
      • hoge.php  //モデルクラス
  • templates/
    • hoge.phtml  //view(必要に応じて)
  • vendor/      //composer installしたやつ
  • composer.json
  • composer.lock
  • index.php

モデルクラスは殆ど書かなくていいけど

<?php
use Illuminate\Database\Eloquent\Model as Eloquent;
class Hoge extends Eloquent {
    protected $table = 'table_name';
}

こんな感じ

index.phpの中で諸々やっちゃう

<?php
require 'vendor/autoload.php';
require 'app/models/hoge.php';
use Illuminate\Database\Capsule\Manager as DatabaseManager;

$app = new \Slim\Slim();
$app->db = new DatabaseManager;
$app->db->addConnection([
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'hoge',
            'username'  => 'hoge',
            'password'  => '',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ]);
$app->db->setAsGlobal();
$app->db->connection();
$app->db->bootEloquent();

$app->get("/", function() use ($app) {
    $hoge = Hoge::find(1);
    //一番最後に更新されたレコードだけほしい時は下記のような感じ
    //$hoge = $app->db->table('table_name')->orderBy('updated_at', 'desc')->take(1)->get();
    $app->response->headers->set('Content-Type', 'application/json');
    $app->response->setBody(json_encode($hoge));
});

$app->run();

という感じで
Eloquentの方のバージョン指定せずに入れると5が入るんで注意
5だと日本語の資料あんまりなくて調べるの面倒だったのでおとなしく4系を使いました

sinatra + activerecordに比べると面倒だけどpassenger入れるよりは簡単なのでおすすめ