わかってるフレームワーク laravel

28
2014/04/04 shin1x1 Fukuoka.php わかってるフレームワーク Laravel

Upload: masashi-shinbara

Post on 12-Jul-2015

6.513 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: わかってるフレームワーク Laravel

2014/04/04 shin1x1

Fukuoka.php

わかってるフレームワーク Laravel

Page 2: わかってるフレームワーク Laravel

(c) 2014 Masashi Shinbara @shin1x1

開発している構成

Page 3: わかってるフレームワーク Laravel

(c) 2014 Masashi Shinbara @shin1x1

開発している構成

Page 4: わかってるフレームワーク Laravel

(c) 2014 Masashi Shinbara @shin1x1

開発している構成

Page 5: わかってるフレームワーク Laravel

(c) 2014 Masashi Shinbara @shin1x1

マイグレーション わかってるなぁ

Page 6: わかってるフレームワーク Laravel

マイグレーション

(c) 2014 Masashi Shinbara @shin1x1

• PHPコードで定義 • ロールバックも可能 • PostgreSQLで使える! • ちゃんと実用できる

Page 7: わかってるフレームワーク Laravel

マイグレーションファイル

(c) 2014 Masashi Shinbara @shin1x1

public function up(){ Schema::create('roles', function(Blueprint $table) { $table->increments('id'); $table->string('name'); });}

• メソッド名が列の型 • 引数が列名

Page 8: わかってるフレームワーク Laravel

マイグレーションファイル

(c) 2014 Masashi Shinbara @shin1x1

public function up(){ Schema::create('users', function(Blueprint $table) { $table->increments('id'); $table->string('name')->unique(); $table->string('email')->unique(); $table->string('password'); $table->integer('role_id')->index(); $table->foreign(‘role_id') ->references(‘id')->on('roles') ->onUpdate('cascade'); $table->timestamps(); });}

• インデックス、ユニーク制約、外部キー も設定可能

Page 9: わかってるフレームワーク Laravel

マイグレーション実行

(c) 2014 Masashi Shinbara @shin1x1

• マイグレーション実行 [up()] (過去に適用したファイルは適用されない) $ php artisan migrate

• マイグレーションロールバック [down()] (直前に実施したマイグレーションのdown()を実行) $ php artisan migrate:rollback

Page 10: わかってるフレームワーク Laravel

(c) 2014 Masashi Shinbara @shin1x1

データベースクエリ わかってるなぁ

Page 11: わかってるフレームワーク Laravel

データベースクエリ

(c) 2014 Masashi Shinbara @shin1x1

マニュアルのサンプルが、いきなり生SQL

Page 12: わかってるフレームワーク Laravel

データベースクエリ

(c) 2014 Masashi Shinbara @shin1x1

マニュアルのサンプルが、いきなり生SQL

どんなSQLでも書ける安心感!

Page 13: わかってるフレームワーク Laravel

データベースクエリ

(c) 2014 Masashi Shinbara @shin1x1

• クエリビルダ DB::table('roles')->where('name', '=', ‘Mike')->get();

• Eloquent(ORM) Role::whereName('Mike')->first();

Page 14: わかってるフレームワーク Laravel

データベースクエリ

(c) 2014 Masashi Shinbara @shin1x1

• WHERE • IN • AND / OR • BETWEEN • IS NULL • OFFSET / LIMIT • GROUP BY / HAVING

• JOIN / LEFT JOIN • EXISTS • COUNT() • SUM() • MAX() / MIN() / AVG() • •

豊富な表現力

Page 15: わかってるフレームワーク Laravel

クエリビルダとEloquent

(c) 2014 Masashi Shinbara @shin1x1

記法 レコード 複数レコード

クエリビルダ SQLライク stdclass array()

Eloquent ORM 自分自身 (ex. User クラス)

Illuminate\Database\Eloquent\Collection

実行できるクエリは、ほぼ同じ

Page 16: わかってるフレームワーク Laravel

データベースコレクション

(c) 2014 Masashi Shinbara @shin1x1

• 取得した値をカンマで連結 Role::all()->implode('name', ‘,'); // role1,role2,role3

• contains() • each() • filter() • sortBy()

• map() • sum() • toArray() / toJson() • and more…

Page 17: わかってるフレームワーク Laravel

(c) 2014 Masashi Shinbara @shin1x1

バリデーション わかってるなぁ

Page 18: わかってるフレームワーク Laravel

バリデーション

(c) 2014 Masashi Shinbara @shin1x1

バリデーションルールの拡張が簡単Validator::extend('fukuoka', function($attribute, $value, $parameters) { return $value === 'Fukuoka';});

$rules = [ 'area' => 'fukuoka',];

Page 19: わかってるフレームワーク Laravel

バリデーション

(c) 2014 Masashi Shinbara @shin1x1

条件が合致した時だけバリデートする$validator = Validator::make(Input::all(), $rules);$validator->sometimes('email_and_pass_unique', 'validate_rule', function($input) { if ($input->has('email') || $input->has('pass')) { return true; }

return false;});

Page 20: わかってるフレームワーク Laravel

(c) 2014 Masashi Shinbara @shin1x1

俺の好み わかってるなぁ

Page 21: わかってるフレームワーク Laravel

Route::group

(c) 2014 Masashi Shinbara @shin1x1

クロージャの意図を入れ子で表現 => 全てのルートで auth フィルタが有効

Route::group(['before' => 'auth'], function() { Route::get('/home', function() { // something });

Route::get('/', function() { // something });});

Page 22: わかってるフレームワーク Laravel

DB::transaction

(c) 2014 Masashi Shinbara @shin1x1

クロージャ内に正常処理 => 自動で BEGIN => 例外が飛べば ROLLBACK => 正常終了なら COMMIT

DB::transaction(function() { DB::table('users')->insert(['name' => 'user-name']); DB::table('roles')->insert(['name' => 'role-name']);});

Page 23: わかってるフレームワーク Laravel

(c) 2014 Masashi Shinbara @shin1x1

自由 わかってるなぁ

Page 24: わかってるフレームワーク Laravel

クラスファイルの置き場

(c) 2014 Masashi Shinbara @shin1x1

• オートローダーで読めればOK • 名前空間を設定してもOK • app/ 以下でなくてもOK

Page 25: わかってるフレームワーク Laravel

フレームワーク拡張

(c) 2014 Masashi Shinbara @shin1x1

• IoC コンテナでクラスを差し替える • 気になるところはどんどん変更可 • フィルタ、イベントハンドラ、 extend メソッドで拡張

Page 26: わかってるフレームワーク Laravel

Laravel

(c) 2014 Masashi Shinbara @shin1x1

こんなふうに考えてください。 アプリケーションは Laravel フレームワークの実装ではありませ ん。 逆に、Laravel が私達のアプリケーションの実装なのです。

Implementing Laravel 日本語版

Page 27: わかってるフレームワーク Laravel

(c) 2014 Masashi Shinbara @shin1x1

まとめ

Laravel わかってるなぁ

Page 28: わかってるフレームワーク Laravel

@shin1x1

(c) 2014 Masashi Shinbara @shin1x1