Laravel使ってみた

2013-06-08T00:00:00+00:00 Laravel PHP

なんか最近話題が多いような気がしなくもないPHPのFramework http://laravel.com を使ってみた

インストール

http://laravel.com からダウンロード。でこっちの環境がApache+mod_phpじゃないっていうかApache自体入ってない(nginx)ので、php-fpmとnginxなfastcgi環境?で利用できるにように設定。

んまぁセットアップ関係はこんくらいかな

ルーティングの定義

LARAVEL_HOME/app/routes.phpに定義していく模様

<?php

Route::get("", "HomeController@index");
Route::get("sample/{id}", "SampleController@index");

Route::get("test", function() {
    return "test";
});

Route::なんちゃらで定義していくんだけど、第2引数にはfunctionなの渡せる模様。まぁちょっとした場合なら良いかも。他の場合にはコントローラークラス@メソッドで定義みたいな感じかと。まだRoutingなドキュメントの所読んでないので

で今回は書かないけど、2つ目のSampleControllerでplaceholderでパラメーターを指定出来るようになってるけど、app/controllers/SampleController.phpでは

<?php

class SampleController extends BaseController {
    public function index($id) {
        var_dump($id);
    }
}

っていうように引数でパラメーターを受け取れる模様。んまぁ今回はとりあえずそこら辺すっとばす

でDBでORM使ってなんかやってみる的な感じなので先に奨める

Database Migrationを作成

php artisan migrate:make create_samples_table

やると、app/database/migrationsディレクトリ内にMigrationなクラスが定義されたPHPファイルが生成されるので

<?php

use Illuminate\Database\Migrations\Migration;

class CreateSamplesTable extends Migration {

    public function up() {
        Schema::create(
            "samples",
            function($table) {
                $table->increments("id");
                $table->string("name");
                $table->timestamps();
            }
        );
    }

    public function down() {
        Schema::drop("samples");
    }
}

な感じで定義

php artisan migrate

でup出来る。

php artisan migrate:rolback

するとdownされる模様

モデルを作る

app/models/Sample.phpを作る

<?php

class Sample extends Eloquent {
}

まー、なんも無いっす。LaravelではORMなモデル定義はEloquentっていうのを使うらしい。でまぁ

Sample::find(1)

とかみたいに使う模様。ちなみにメソッドに「OrFail」っていう接尾辞がつくメソッド系とかは「検索してマッチしなかったらModelNotFoundExceptionをスロー」的な感じで例外が発生する模様

でちなみにLaravelでREPL的なのはtinkerっていうので使えるらしい

php artisan tinker

コントローラーを使う

上記で

Routes::get("", "HomeController@index");

って定義したのでapp/controllers/HomeController.phpを作る

<?php

class HomeController extends BaseController {
    public function index() {
        return View::make("home")->with("samples", Sample::all());
    }
}

な感じ。まぁ大体な事は何やってるのか分かるので(ry

ビューを作る

まぁ良く一般的にレイアウト定義があってコンテンツ部だけなビューテンプレートを書くっていうのが多いと思うので、app/views/layout.blade.phpを作る

<html>
    <body>
        <h1>Laravel Quickstart</h1>

        @yield("content")
    </body>
</html>

@yield("content")な所に作成したビューの内容を突っ込まれるっていう感じっすね。でコントローラーではView::make("home")したのでapp/views/home.blade.phpを作る

@extends("layout")
@section("content")
    @foreach($samples as $sample)
        <h4>{{ $sample->name }}</h4>
    @endforeach
@stop

書かなくても分かるので(ry

まぁという感じでざっくりとマニュアル読みつつやってみた。まだまだ続く

余談

良く、「FuelPHP vs Laravel」みたいな表現を目にする事があるような気がしますが、個人的には「まだ分からない」の一点だけ。というかやはり単体テストだとかそういう所まで行ってないので結構良い感じに勉強を進めて改めてどっちが良いかとかは評価してみたいなぁっと

Laravel使ってみた (2) - Configuration - Android AccountManagerのgetAuthTokenはキャッシュされる?