2014/04/04 shin1x1
Fukuoka.php
わかってるフレームワーク
Laravel
(c) 2014 Masashi Shinbara @shin1x1
開発している構成
(c) 2014 Masashi Shinbara @shin1x1
開発している構成
(c) 2014 Masashi Shinbara @shin1x1
開発している構成
(c) 2014 Masashi Shinbara @shin1x1
マイグレーション
わかってるなぁ
マイグレーション
(c) 2014 Masashi Shinbara @shin1x1
• PHPコードで定義
• ロールバックも可能
• PostgreSQLで使える!
• ちゃんと実用できる
マイグレーションファイル
(c) 2014 Masashi Shinbara @shin1x1
public function up()
{
Schema::create('roles', function(Blueprint $table) {
$table->increments('id');
$table->string('name');
});
}
• メソッド名が列の型
• 引数が列名
マイグレーションファイル
(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();
});
}
• インデックス、ユニーク制約、外部キー も設定可能
マイグレーション実行
(c) 2014 Masashi Shinbara @shin1x1
• マイグレーション実行 [up()]
(過去に適用したファイルは適用されない)
$ php artisan migrate
• マイグレーションロールバック [down()]

(直前に実施したマイグレーションのdown()を実行)
$ php artisan migrate:rollback
(c) 2014 Masashi Shinbara @shin1x1
データベースクエリ
わかってるなぁ
データベースクエリ
(c) 2014 Masashi Shinbara @shin1x1
マニュアルのサンプルが、いきなり生SQL
データベースクエリ
(c) 2014 Masashi Shinbara @shin1x1
マニュアルのサンプルが、いきなり生SQL
どんなSQLでも書ける安心感!
データベースクエリ
(c) 2014 Masashi Shinbara @shin1x1
• クエリビルダ
DB::table('roles')->where('name', '=', ‘Mike')->get();
• Eloquent(ORM)
Role::whereName('Mike')->first();
データベースクエリ
(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()
•
•
豊富な表現力
クエリビルダとEloquent
(c) 2014 Masashi Shinbara @shin1x1
記法 レコード 複数レコード
クエリビルダ SQLライク stdclass array()
Eloquent ORM
自分自身
(ex. User クラス)
Illuminate
Database
Eloquent
Collection
実行できるクエリは、ほぼ同じ
データベースコレクション
(c) 2014 Masashi Shinbara @shin1x1
• 取得した値をカンマで連結
Role::all()->implode('name', ‘,');
// role1,role2,role3
• contains()
• each()
• filter()
• sortBy()
• map()
• sum()
• toArray() / toJson()
• and more…
(c) 2014 Masashi Shinbara @shin1x1
バリデーション
わかってるなぁ
バリデーション
(c) 2014 Masashi Shinbara @shin1x1
バリデーションルールの拡張が簡単
Validator::extend('fukuoka', function($attribute, $value, $parameters) {
return $value === 'Fukuoka';
});
$rules = [
'area' => 'fukuoka',
];
バリデーション
(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;
});
(c) 2014 Masashi Shinbara @shin1x1
俺の好み
わかってるなぁ
Route::group
(c) 2014 Masashi Shinbara @shin1x1
クロージャの意図を入れ子で表現
=> 全てのルートで auth フィルタが有効
Route::group(['before' => 'auth'], function() {
Route::get('/home', function() {
// something
});
Route::get('/', function() {
// something
});
});
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']);
});
(c) 2014 Masashi Shinbara @shin1x1
自由
わかってるなぁ
クラスファイルの置き場
(c) 2014 Masashi Shinbara @shin1x1
• オートローダーで読めればOK
• 名前空間を設定してもOK
• app/ 以下でなくてもOK
フレームワーク拡張
(c) 2014 Masashi Shinbara @shin1x1
• IoC コンテナでクラスを差し替える
• 気になるところはどんどん変更可
• フィルタ、イベントハンドラ、 

extend メソッドで拡張
Laravel
(c) 2014 Masashi Shinbara @shin1x1
こんなふうに考えてください。
アプリケーションは Laravel フレーム
ワークの実装ではありませ ん。
逆に、Laravel が私達のアプリケーショ
ンの実装なのです。
Implementing Laravel 日本語版
(c) 2014 Masashi Shinbara @shin1x1
まとめ
Laravel
わかってるなぁ
@shin1x1
(c) 2014 Masashi Shinbara @shin1x1

More Related Content

PDF
Azure Websites で作るスケーラブルな PHP アプリケーション
PDF
Heroku で作る
スケーラブルな 
PHP アプリケーション
PDF
Vagrant体験入門
PDF
開発現場で活用するVagrant
PDF
いまどきのPHP
PDF
Vagrant で作る PHP 開発環境 [実践編]
PDF
Laravel ユーザなら知っておくべきAuthオートログイン
PDF
Vagrant で PHP 開発環境を作る ハンズオン
Azure Websites で作るスケーラブルな PHP アプリケーション
Heroku で作る
スケーラブルな 
PHP アプリケーション
Vagrant体験入門
開発現場で活用するVagrant
いまどきのPHP
Vagrant で作る PHP 開発環境 [実践編]
Laravel ユーザなら知っておくべきAuthオートログイン
Vagrant で PHP 開発環境を作る ハンズオン

What's hot (20)

PDF
認証機能で学ぶ Laravel 5 アプリケーション
PDF
Twilio API を PHP で触ってみよう
PDF
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
PDF
PHPコードではなく PHPコードの「書き方」を知る
PDF
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
PDF
AWSをコードで定義する
PDF
Lambdaによるクラウド型言語の実装
PDF
20140930 anything as_code
PDF
FluentdとRedshiftの素敵な関係
PDF
Elixir Meetup #1 Loggerの構造と拡張
PDF
Terraforming
PDF
Spring Framework / Boot / Data 徹底活用 〜Spring Data Redis 編〜
PDF
serverless framework + AWS Lambda with Python
PDF
130207 kyotorb
PDF
CFの便利機能を他の環境でも。Open Service Broker
PDF
20131208 agile samuraibasecamp
PDF
Sbtのマルチプロジェクトはいいぞ
PDF
Machine learning CI/CD with OSS
PDF
Rails解説セミナー: Railsのアップグレード編
PDF
asm.jsとWebAssemblyって実際なんなの?
認証機能で学ぶ Laravel 5 アプリケーション
Twilio API を PHP で触ってみよう
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
PHPコードではなく PHPコードの「書き方」を知る
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
AWSをコードで定義する
Lambdaによるクラウド型言語の実装
20140930 anything as_code
FluentdとRedshiftの素敵な関係
Elixir Meetup #1 Loggerの構造と拡張
Terraforming
Spring Framework / Boot / Data 徹底活用 〜Spring Data Redis 編〜
serverless framework + AWS Lambda with Python
130207 kyotorb
CFの便利機能を他の環境でも。Open Service Broker
20131208 agile samuraibasecamp
Sbtのマルチプロジェクトはいいぞ
Machine learning CI/CD with OSS
Rails解説セミナー: Railsのアップグレード編
asm.jsとWebAssemblyって実際なんなの?
Ad

Viewers also liked (20)

PDF
デザインにもこだわったUiの事始め3
PPTX
アプリチームを支えるSlack bot
PDF
ビルドサーバで使うDocker
PPTX
Laravelチュートリアルを作ってみた。
PDF
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
PPTX
JavaScriptから利用するFirebase
PPTX
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
PDF
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
PPTX
20151205フルスクラッチcms作成のノウハウ With Laravel
PPTX
Phpフレームワーク 「laravel」でブログを作ろう
PPTX
Laravel LT
PDF
3 tips of Laravel
PDF
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
PDF
Laravel / Lumen 次の一歩
PDF
カスタムトランジションやジェスチャーを生かしたUIの実装ポイント
PDF
Laravel の学び方と得られる学び
PPTX
Laravelを使ってみた
PDF
Firebaseでのファイルアップロード処理と便利ライブラリの紹介
PDF
指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説
PDF
今からでも大丈夫!Firebase入門
デザインにもこだわったUiの事始め3
アプリチームを支えるSlack bot
ビルドサーバで使うDocker
Laravelチュートリアルを作ってみた。
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
JavaScriptから利用するFirebase
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
20151205フルスクラッチcms作成のノウハウ With Laravel
Phpフレームワーク 「laravel」でブログを作ろう
Laravel LT
3 tips of Laravel
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
Laravel / Lumen 次の一歩
カスタムトランジションやジェスチャーを生かしたUIの実装ポイント
Laravel の学び方と得られる学び
Laravelを使ってみた
Firebaseでのファイルアップロード処理と便利ライブラリの紹介
指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説
今からでも大丈夫!Firebase入門
Ad

Similar to わかってるフレームワーク Laravel (20)

PPT
今、最もイケてるPHPフレームワークLaravel4
PPTX
R超入門機械学習をはじめよう
PDF
今、最もイケてるPHPフレームワークLaravel4
PDF
Ansible ではじめるサーバ作業の自動化
PDF
Spark graph framesとopencypherによる分散グラフ処理の最新動向
PDF
オブジェクト指向開発におけるObject-Functional Programming
PDF
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PDF
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
PDF
なぜリアクティブは重要か #ScalaMatsuri
PDF
Scalaプログラミング・マニアックス
PDF
Haikara
PDF
Laravel における Blade 拡張のツラミ
PDF
先取り!PHP 7 と WordPress
PPTX
PHPで並列処理する ライブラリを作った
PDF
T51 jQueryで学ぶJavaScriptでのフロント開発~ASP.NET MVC3もあるよっ!~
PDF
PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜
KEY
WordPress中級者への道!テンプレートタグはどう動くのか!?
PDF
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
PPTX
T69 c++cli ネイティブライブラリラッピング入門
PDF
ドメイン駆動設計のためのオブジェクト指向入門
今、最もイケてるPHPフレームワークLaravel4
R超入門機械学習をはじめよう
今、最もイケてるPHPフレームワークLaravel4
Ansible ではじめるサーバ作業の自動化
Spark graph framesとopencypherによる分散グラフ処理の最新動向
オブジェクト指向開発におけるObject-Functional Programming
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
なぜリアクティブは重要か #ScalaMatsuri
Scalaプログラミング・マニアックス
Haikara
Laravel における Blade 拡張のツラミ
先取り!PHP 7 と WordPress
PHPで並列処理する ライブラリを作った
T51 jQueryで学ぶJavaScriptでのフロント開発~ASP.NET MVC3もあるよっ!~
PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜
WordPress中級者への道!テンプレートタグはどう動くのか!?
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
T69 c++cli ネイティブライブラリラッピング入門
ドメイン駆動設計のためのオブジェクト指向入門

More from Masashi Shinbara (14)

PDF
日本語消えたスライド
PDF
Twilio入門 -Web アプリ編-
PDF
いまどきのPHP開発現場 -2015年秋-
PDF
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
PDF
How to learn Laravel5 application from Authentication
PDF
VagrantユーザのためのDocker入門
PDF
キャラ立ちしたエンジニアになる!
PDF
Composer 再入門
PDF
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
PDF
Vagrant を Web開発環境に使う
PDF
PHP 5.5 Zend OPcache
PDF
サーバの防災訓練
PDF
Kansai PHP Users Group 2012年活動報告
KEY
10分で分かる最近のCakePHP
日本語消えたスライド
Twilio入門 -Web アプリ編-
いまどきのPHP開発現場 -2015年秋-
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
How to learn Laravel5 application from Authentication
VagrantユーザのためのDocker入門
キャラ立ちしたエンジニアになる!
Composer 再入門
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
Vagrant を Web開発環境に使う
PHP 5.5 Zend OPcache
サーバの防災訓練
Kansai PHP Users Group 2012年活動報告
10分で分かる最近のCakePHP

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

  • 2. (c) 2014 Masashi Shinbara @shin1x1 開発している構成
  • 3. (c) 2014 Masashi Shinbara @shin1x1 開発している構成
  • 4. (c) 2014 Masashi Shinbara @shin1x1 開発している構成
  • 5. (c) 2014 Masashi Shinbara @shin1x1 マイグレーション わかってるなぁ
  • 6. マイグレーション (c) 2014 Masashi Shinbara @shin1x1 • PHPコードで定義 • ロールバックも可能 • PostgreSQLで使える! • ちゃんと実用できる
  • 7. マイグレーションファイル (c) 2014 Masashi Shinbara @shin1x1 public function up() { Schema::create('roles', function(Blueprint $table) { $table->increments('id'); $table->string('name'); }); } • メソッド名が列の型 • 引数が列名
  • 8. マイグレーションファイル (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(); }); } • インデックス、ユニーク制約、外部キー も設定可能
  • 9. マイグレーション実行 (c) 2014 Masashi Shinbara @shin1x1 • マイグレーション実行 [up()] (過去に適用したファイルは適用されない) $ php artisan migrate • マイグレーションロールバック [down()]
 (直前に実施したマイグレーションのdown()を実行) $ php artisan migrate:rollback
  • 10. (c) 2014 Masashi Shinbara @shin1x1 データベースクエリ わかってるなぁ
  • 11. データベースクエリ (c) 2014 Masashi Shinbara @shin1x1 マニュアルのサンプルが、いきなり生SQL
  • 12. データベースクエリ (c) 2014 Masashi Shinbara @shin1x1 マニュアルのサンプルが、いきなり生SQL どんなSQLでも書ける安心感!
  • 13. データベースクエリ (c) 2014 Masashi Shinbara @shin1x1 • クエリビルダ DB::table('roles')->where('name', '=', ‘Mike')->get(); • Eloquent(ORM) Role::whereName('Mike')->first();
  • 14. データベースクエリ (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() • • 豊富な表現力
  • 15. クエリビルダとEloquent (c) 2014 Masashi Shinbara @shin1x1 記法 レコード 複数レコード クエリビルダ SQLライク stdclass array() Eloquent ORM 自分自身 (ex. User クラス) Illuminate Database Eloquent Collection 実行できるクエリは、ほぼ同じ
  • 16. データベースコレクション (c) 2014 Masashi Shinbara @shin1x1 • 取得した値をカンマで連結 Role::all()->implode('name', ‘,'); // role1,role2,role3 • contains() • each() • filter() • sortBy() • map() • sum() • toArray() / toJson() • and more…
  • 17. (c) 2014 Masashi Shinbara @shin1x1 バリデーション わかってるなぁ
  • 18. バリデーション (c) 2014 Masashi Shinbara @shin1x1 バリデーションルールの拡張が簡単 Validator::extend('fukuoka', function($attribute, $value, $parameters) { return $value === 'Fukuoka'; }); $rules = [ 'area' => 'fukuoka', ];
  • 19. バリデーション (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; });
  • 20. (c) 2014 Masashi Shinbara @shin1x1 俺の好み わかってるなぁ
  • 21. Route::group (c) 2014 Masashi Shinbara @shin1x1 クロージャの意図を入れ子で表現 => 全てのルートで auth フィルタが有効 Route::group(['before' => 'auth'], function() { Route::get('/home', function() { // something }); Route::get('/', function() { // something }); });
  • 22. 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']); });
  • 23. (c) 2014 Masashi Shinbara @shin1x1 自由 わかってるなぁ
  • 24. クラスファイルの置き場 (c) 2014 Masashi Shinbara @shin1x1 • オートローダーで読めればOK • 名前空間を設定してもOK • app/ 以下でなくてもOK
  • 25. フレームワーク拡張 (c) 2014 Masashi Shinbara @shin1x1 • IoC コンテナでクラスを差し替える • 気になるところはどんどん変更可 • フィルタ、イベントハンドラ、 
 extend メソッドで拡張
  • 26. Laravel (c) 2014 Masashi Shinbara @shin1x1 こんなふうに考えてください。 アプリケーションは Laravel フレーム ワークの実装ではありませ ん。 逆に、Laravel が私達のアプリケーショ ンの実装なのです。 Implementing Laravel 日本語版
  • 27. (c) 2014 Masashi Shinbara @shin1x1 まとめ Laravel わかってるなぁ
  • 28. @shin1x1 (c) 2014 Masashi Shinbara @shin1x1