Submit Search
Upload
〜laravel で学ぶ MVC
•
Download as PPTX, PDF
•
2 likes
•
8,349 views
mikakane
Follow
laravel.osaka のお話
Read less
Read more
Internet
Report
Share
Report
Share
1 of 51
Download now
Recommended
LaravelとMVCの先へ
LaravelとMVCの先へ
Yuuki Takezawa
Laravelを使ってみた
Laravelを使ってみた
Jaeseop Jeong
Laravel5.1をつかったWebアプリケーション開発
Laravel5.1をつかったWebアプリケーション開発
kan-notice
今日から始めるLaravel
今日から始めるLaravel
Masaru Matsuo
Phpフレームワーク 「laravel」でブログを作ろう
Phpフレームワーク 「laravel」でブログを作ろう
Syouta Tada
Laravel 5.1 LTSでサービスを作る
Laravel 5.1 LTSでサービスを作る
infinite_loop
php開発で使うタスクランナー gulp
php開発で使うタスクランナー gulp
Yuuki Takezawa
Laravel の学び方と得られる学び
Laravel の学び方と得られる学び
Masaru Matsuo
Recommended
LaravelとMVCの先へ
LaravelとMVCの先へ
Yuuki Takezawa
Laravelを使ってみた
Laravelを使ってみた
Jaeseop Jeong
Laravel5.1をつかったWebアプリケーション開発
Laravel5.1をつかったWebアプリケーション開発
kan-notice
今日から始めるLaravel
今日から始めるLaravel
Masaru Matsuo
Phpフレームワーク 「laravel」でブログを作ろう
Phpフレームワーク 「laravel」でブログを作ろう
Syouta Tada
Laravel 5.1 LTSでサービスを作る
Laravel 5.1 LTSでサービスを作る
infinite_loop
php開発で使うタスクランナー gulp
php開発で使うタスクランナー gulp
Yuuki Takezawa
Laravel の学び方と得られる学び
Laravel の学び方と得られる学び
Masaru Matsuo
フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由
Kenichi Mukai
Laravel5.1 Release
Laravel5.1 Release
Yuuki Takezawa
Perl Beginners #7 おとなのWAF
Perl Beginners #7 おとなのWAF
Munenori Sugimura
活動報告9 laravel5入門-
活動報告9 laravel5入門-
vx-pc-club
究極にして至高のWAF
究極にして至高のWAF
Yuki Ishikawa
Laravelのパッケージのテストに便利なパッケージ
Laravelのパッケージのテストに便利なパッケージ
Yuta Nagamiya
Androidアプリ開発にクリーンアーキテクチャを取り入れよう(OSS編)
Androidアプリ開発にクリーンアーキテクチャを取り入れよう(OSS編)
kan-notice
PHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作った
Hironobu Saitoh
はじめてLaravelさわった 第86回php勉強会
はじめてLaravelさわった 第86回php勉強会
Osamu Kawasaki
魔法少女 Laravel
魔法少女 Laravel
Kenichi Mukai
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013
Tasuku Suenaga
3流プログラマーから見たPhalconとWISP
3流プログラマーから見たPhalconとWISP
YamaYamamoto
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
Hisateru Tanaka
Laravelチュートリアルを作ってみた。
Laravelチュートリアルを作ってみた。
Futoshi Endo
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
Hiroshi Toda
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
Hiroshi Toda
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
Hisateru Tanaka
PHPから離れて感じるPHPの良さ
PHPから離れて感じるPHPの良さ
Shinichi Takahashi
PHPの今とこれから2015
PHPの今とこれから2015
Rui Hirokawa
PHPデプロイツールの世界
PHPデプロイツールの世界
Yuuki Takezawa
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
Masashi Shinbara
More Related Content
What's hot
フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由
Kenichi Mukai
Laravel5.1 Release
Laravel5.1 Release
Yuuki Takezawa
Perl Beginners #7 おとなのWAF
Perl Beginners #7 おとなのWAF
Munenori Sugimura
活動報告9 laravel5入門-
活動報告9 laravel5入門-
vx-pc-club
究極にして至高のWAF
究極にして至高のWAF
Yuki Ishikawa
Laravelのパッケージのテストに便利なパッケージ
Laravelのパッケージのテストに便利なパッケージ
Yuta Nagamiya
Androidアプリ開発にクリーンアーキテクチャを取り入れよう(OSS編)
Androidアプリ開発にクリーンアーキテクチャを取り入れよう(OSS編)
kan-notice
PHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作った
Hironobu Saitoh
はじめてLaravelさわった 第86回php勉強会
はじめてLaravelさわった 第86回php勉強会
Osamu Kawasaki
魔法少女 Laravel
魔法少女 Laravel
Kenichi Mukai
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013
Tasuku Suenaga
3流プログラマーから見たPhalconとWISP
3流プログラマーから見たPhalconとWISP
YamaYamamoto
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
Hisateru Tanaka
Laravelチュートリアルを作ってみた。
Laravelチュートリアルを作ってみた。
Futoshi Endo
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
Hiroshi Toda
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
Hiroshi Toda
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
Hisateru Tanaka
PHPから離れて感じるPHPの良さ
PHPから離れて感じるPHPの良さ
Shinichi Takahashi
PHPの今とこれから2015
PHPの今とこれから2015
Rui Hirokawa
What's hot
(20)
フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由
Laravel5.1 Release
Laravel5.1 Release
Perl Beginners #7 おとなのWAF
Perl Beginners #7 おとなのWAF
活動報告9 laravel5入門-
活動報告9 laravel5入門-
究極にして至高のWAF
究極にして至高のWAF
Laravelのパッケージのテストに便利なパッケージ
Laravelのパッケージのテストに便利なパッケージ
Androidアプリ開発にクリーンアーキテクチャを取り入れよう(OSS編)
Androidアプリ開発にクリーンアーキテクチャを取り入れよう(OSS編)
PHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作った
はじめてLaravelさわった 第86回php勉強会
はじめてLaravelさわった 第86回php勉強会
魔法少女 Laravel
魔法少女 Laravel
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013
3流プログラマーから見たPhalconとWISP
3流プログラマーから見たPhalconとWISP
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
Laravelチュートリアルを作ってみた。
Laravelチュートリアルを作ってみた。
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PHPから離れて感じるPHPの良さ
PHPから離れて感じるPHPの良さ
PHPの今とこれから2015
PHPの今とこれから2015
Viewers also liked
PHPデプロイツールの世界
PHPデプロイツールの世界
Yuuki Takezawa
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
Masashi Shinbara
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
Mayumi Narisawa
指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説
指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説
Fumiya Sakai
Firebaseでのファイルアップロード処理と便利ライブラリの紹介
Firebaseでのファイルアップロード処理と便利ライブラリの紹介
Fumiya Sakai
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
Kouhei Sutou
JavaScriptから利用するFirebase
JavaScriptから利用するFirebase
Takuji Shimokawa
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
Kouhei Sutou
ビルドサーバで使うDocker
ビルドサーバで使うDocker
Masashi Shinbara
アプリチームを支えるSlack bot
アプリチームを支えるSlack bot
Kazuaki KURIU
3 tips of Laravel
3 tips of Laravel
Kazuaki KURIU
Laravel / Lumen 次の一歩
Laravel / Lumen 次の一歩
Yuuki Takezawa
カスタムトランジションやジェスチャーを生かしたUIの実装ポイント
カスタムトランジションやジェスチャーを生かしたUIの実装ポイント
Fumiya Sakai
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
Masashi Shinbara
Laravel LT
Laravel LT
Iwama Ryo
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
Kazuaki KURIU
わかってるフレームワーク Laravel
わかってるフレームワーク Laravel
Masashi Shinbara
20151205フルスクラッチcms作成のノウハウ With Laravel
20151205フルスクラッチcms作成のノウハウ With Laravel
Takumi Yoshida
デザインにもこだわったUiの事始め3
デザインにもこだわったUiの事始め3
Fumiya Sakai
Firebaseで驚くほど簡単に作れるリアルタイムイベントドリブンアプリ
Firebaseで驚くほど簡単に作れるリアルタイムイベントドリブンアプリ
Fumihiko Shiroyama
Viewers also liked
(20)
PHPデプロイツールの世界
PHPデプロイツールの世界
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説
指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説
Firebaseでのファイルアップロード処理と便利ライブラリの紹介
Firebaseでのファイルアップロード処理と便利ライブラリの紹介
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
JavaScriptから利用するFirebase
JavaScriptから利用するFirebase
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
ビルドサーバで使うDocker
ビルドサーバで使うDocker
アプリチームを支えるSlack bot
アプリチームを支えるSlack bot
3 tips of Laravel
3 tips of Laravel
Laravel / Lumen 次の一歩
Laravel / Lumen 次の一歩
カスタムトランジションやジェスチャーを生かしたUIの実装ポイント
カスタムトランジションやジェスチャーを生かしたUIの実装ポイント
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
Laravel LT
Laravel LT
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
わかってるフレームワーク Laravel
わかってるフレームワーク Laravel
20151205フルスクラッチcms作成のノウハウ With Laravel
20151205フルスクラッチcms作成のノウハウ With Laravel
デザインにもこだわったUiの事始め3
デザインにもこだわったUiの事始め3
Firebaseで驚くほど簡単に作れるリアルタイムイベントドリブンアプリ
Firebaseで驚くほど簡単に作れるリアルタイムイベントドリブンアプリ
Similar to 〜laravel で学ぶ MVC
WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話
WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話
keitasudo1
OSC福岡2012 LT 20121208
OSC福岡2012 LT 20121208
学 松崎
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
拓将 平林
Lt 20120901
Lt 20120901
Tomoyuki Obi
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
Kenichi Mukai
PHP カンファレンス福岡 参加報告
PHP カンファレンス福岡 参加報告
y-uti
CakePHP PHP Framework
CakePHP PHP Framework
ryota ichie
SFDG_画面フローとLightningWebComponentのハイブリッド開発について.pptx
SFDG_画面フローとLightningWebComponentのハイブリッド開発について.pptx
Toru Inoue
オフライン行動を支えるメール配送管理 at サイタ
オフライン行動を支えるメール配送管理 at サイタ
Yosuke TOMITA
FuelPHP活用事例
FuelPHP活用事例
Yusuke Naka
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
sasezaki
PHPカンファレンス福岡に 行ってきた
PHPカンファレンス福岡に 行ってきた
Tomoki Hasegawa
PHP x AWS でスケーラブルなシステムをつくろう
PHP x AWS でスケーラブルなシステムをつくろう
Taiji INOUE
RFC: "var" Deprecation
RFC: "var" Deprecation
y-uti
まだFTPで消耗してるの? Wordmoveではじめる 異次元のデータ転送
まだFTPで消耗してるの? Wordmoveではじめる 異次元のデータ転送
Sou Lab
Silverlight+COMにチャレンジ
Silverlight+COMにチャレンジ
You&I
Symfony開発者がLaravelしようとして云々
Symfony開発者がLaravelしようとして云々
mimizuk
Lync でできる? 仕事効率化
Lync でできる? 仕事効率化
Manato KAMEYA
20090828 Webconlocal
20090828 Webconlocal
Kentaro Matsui
いまどき(これから)のPHP開発
いまどき(これから)のPHP開発
Kenjiro Kubota
Similar to 〜laravel で学ぶ MVC
(20)
WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話
WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話
OSC福岡2012 LT 20121208
OSC福岡2012 LT 20121208
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
Lt 20120901
Lt 20120901
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
PHP カンファレンス福岡 参加報告
PHP カンファレンス福岡 参加報告
CakePHP PHP Framework
CakePHP PHP Framework
SFDG_画面フローとLightningWebComponentのハイブリッド開発について.pptx
SFDG_画面フローとLightningWebComponentのハイブリッド開発について.pptx
オフライン行動を支えるメール配送管理 at サイタ
オフライン行動を支えるメール配送管理 at サイタ
FuelPHP活用事例
FuelPHP活用事例
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
PHPカンファレンス福岡に 行ってきた
PHPカンファレンス福岡に 行ってきた
PHP x AWS でスケーラブルなシステムをつくろう
PHP x AWS でスケーラブルなシステムをつくろう
RFC: "var" Deprecation
RFC: "var" Deprecation
まだFTPで消耗してるの? Wordmoveではじめる 異次元のデータ転送
まだFTPで消耗してるの? Wordmoveではじめる 異次元のデータ転送
Silverlight+COMにチャレンジ
Silverlight+COMにチャレンジ
Symfony開発者がLaravelしようとして云々
Symfony開発者がLaravelしようとして云々
Lync でできる? 仕事効率化
Lync でできる? 仕事効率化
20090828 Webconlocal
20090828 Webconlocal
いまどき(これから)のPHP開発
いまどき(これから)のPHP開発
〜laravel で学ぶ MVC
1.
laravel で学ぶMVC 株式会社chatbox みかかね@mkkn_info KFUG 年忘れLT大会 http://kfug.connpass.com/event/22377/ 2015.12.13
2.
about me みかかね@mkkn_info #PHPer, フロントエンド #
株式会社chatbox 代表 #関西フロントエンドUG代表 関西でWeb制作とかやっています。 03/05にFRONTEND CONFERENCE 2016 開催します。 facebook:後藤知宏 twitter: @mkkn_info
3.
laravel
4.
この頃流行りのフレームワーク
5.
laravel 開発が盛んなPHP製フレームワーク コミュニティ等でも人気が高い Symfonyベースのコンポーネントシステム・DI 使いやすさを重視した柔軟なUI 日本語リファレンスのほか、 最近は本も出てますます学びやすく。
6.
とにかく人気
7.
laravelの豊富な機能 • 認証 • キュー管理 •
DBマイグレーション • Tack / Schedule管理 • Billing • etc…
8.
lumenという派生の マイクロフレームワークも
9.
ミニマルな構成 + 豊富な機能パッケージ
10.
他人と同じものを使うというのは それだけでメリットだったり
11.
本日はMVCのお話
12.
Model View Controller Webアプリケーション構築の考え方の1つ ロジックを扱うモデル、見た目に関する処理をするView、 制御系のControllerの3層に分割する。 アプリケーションをModel
View Controllerの3階層に分ける 膨大なシステムの分割手法の1つ という、教科書的な話を聞いても 実際の現場ではよくわからない事が多かったり。
13.
分割分割というけど、何のために?
14.
なんとなくでMVCしてませんか?
15.
MVCの目的と役割を理解して 正しいシステム分割を!!
16.
laravel ≠ MVCフレームワーク
17.
laravel = MVCもできるフレームワーク
18.
Dispatch いわゆるルーティング。MVCの前段階のレイヤ route.php を利用してなんでも出来る。 フレームワークの重要な機能として、 リクエスト処理に応じて、処理を振り分ける機能 MVCディレクトリ構造を無視した 柔軟なルーティング設定が可能な点があげられる。 ( 非常に重要!!
)
19.
MVCという概念の無いコード <?php // routes.php Route::get('/top', function
() { $mode = Request::get("list_mode"); $list = Master_List::get($mode); return view("top",["list"=>$list]); });
20.
1つのファイルに全てを収めるのは 管理が大変
21.
だが、しかし
22.
ファイルを分割するだけで システムは便利になるのだろうか…
23.
ファイル分割のデメリット • 分散するコード • 障害復旧の探索コスト •
追加実装時に実装箇所で迷う • etc…
24.
システム分割の基本 基本的な目的は責務の明確化 責務の明確でないファイル分割は、 無駄にコードが分散して、逆に複雑になりがち。 ファイルを分ける事がシステム分割ではない。 ファイル毎にやること・やらないことを明確にする。 逆に1枚もののPHPでもブロックごとに責務が明確であれば、 十分に可読性のあるコードが出来上がる。
25.
ファイルを分割しようとしない
26.
責務を分割する (結果としてファイルが分かれる)
27.
Controller Model View Request
扱う 扱わない 扱わない ロジック 扱わない 扱う 扱わない HTML 扱わない 扱わない 扱う
28.
Controller の責務 Request (HTTP)を扱う責務 RequestをCに集約する(ロジックがHTTPを意識しない)と、 View層、Model層の再利用性が上がる。 Request
= パラメータの処理や、Sessionなど HTTP固有の処理 HTTPがController層に集約されると、 View層、Model層のテスト可能性が高まる。
29.
Controller層を View・Modelから分離することが 一番重要
30.
スキニーコントローラの実践は簡単
31.
Controllerでやるべきことを考える
32.
Controller(層)ですべきこと • Requestの処理 • Sessionの管理 •
バリデーション • エラーハンドリング • ( 諸説あります )
33.
Viewの責務 見た目に関する処理を扱う責務 何をするか(ロジック)と何を返すか(レスポンス)を 明確に分離することで、仕様変更に対する柔軟性が上がる。 一般的にはHTMLだが、APIなどの場合にはJSON Responseとして捉えると良い。 一般的にロジックの修正は入りにくい。 レスポンスに関する修正は頻繁に発生する。
34.
ポイント:ViewでControllerを扱わない
35.
Controller 層を含むView <div id=“header”> <?php
if($user = Auth::user()):?> username: <?=$user->name?> <?php endif;?> </div> <?php if($msg = Session::get(“message”)):?> <div class=“alert alert-default”> <?= $msg ?> </div> <?php endif; ?>
36.
Viewで気をつけること • データの割当は極力変数で割り当てる。 • テンプレート内部で呼び出すのは ステートレスなヘルパー系の関数のみ •
ロジック的な複雑な処理は、 ステートレスにして、Modelに追い出す。
37.
見た目に特化したViewのメリット • Viewの中にロジックが入らないので コードの見通しが良くなる。 • HTTPレベルの要件に依存しないので、 セッション等リクエスト層での仕様変更で Viewを調査・変更する必要が無くなる。 •
リクエストの状態に影響されないので、 Viewを部分的に切り出して転用も楽。
38.
Modelの責務 ロジックに関する処理を扱う責務 機能に関するベースの部分で、テストの重要性が高い 設計においても比較的初期に仕様が固められる ロジック = システムの根幹機能に関する処理全般 システムUIに関する影響を受けない根底部分 ロジックと言っても範囲は広範なため、 更に細かくレイヤを分割する必要がある。
39.
ポイント1:ModelでControllerを扱わない
40.
Controller 層を含むModel public function
login(){ $email = Request::get(“email”); $password = Request::get(“password”); $user = User::where([ “email” => $email ........ public function getUser(){ $id = Session::get(“login_id”); return User::get($id); }
41.
ポイント2:ModelでViewを扱わない
42.
View 層を含むModel public function
getUserJson(){ $data = $this->toArray(); unset($data[“passowrd”]); // パスワードはマスク return $data; } public function getCategory(){ if($this->category){ return “<span class=‘category’>{$this->category}</span>” }else{ return “<span class=‘default’>未分類</span>” } }
43.
Modelで気をつけること • Modelの入出力について、特定のケースのみを想定し た書き方をしない。 • 入力:HTTPだけでなく
Artisan,Jobなど • 出力:HTMLだけでなくconsole, jsonなど • 単純に引数と戻り値のみ考えれば良い。 • どうしても…という場合にはControllerServiceや ViewModelといった層の導入も考えてみる。
44.
ロジックに特化したModelのメリット • Modelの責務が明確で仕様変更に強いModel が出来上がる。 • 入出力が明確で、再利用性の高い柔軟なモデ ルが出来上がる。 •
再利用性が高く、仕様変更にも強いためテス トを書いても寿命が長く使える。
45.
ユニットテストの導入は、 現場の状況次第で難易度が変わる
46.
テスト可能なコードを書く = 本人の技術力次第
47.
テスト可能なコード = 責務が明確であるコード
48.
責務を意識してコード記述を進めると ドメイン駆動などの設計論もわかりやすい
49.
なんとなくでなぞると 「っぽい」だけで意図のわからないコードが…
50.
責務意識して綺麗なMVC
51.
ご清澄ありがとうございました。
Download now