Laravel使ってみた
なんか最近話題が多いような気がしなくもない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」みたいな表現を目にする事があるような気がしますが、個人的には「まだ分からない」の一点だけ。というかやはり単体テストだとかそういう所まで行ってないので結構良い感じに勉強を進めて改めてどっちが良いかとかは評価してみたいなぁっと