[laravel] crudアプリから一歩踏み出す3つのアプローチ
TRANSCRIPT
CRUDアプリから一歩踏み出す3つのアプローチ
2017.07.26 @kurikazu Laravel LT night #1
https://blogs.yahoo.co.jp/rokuken06/GALLERY/show_image.html?id=39909503&no=0
class JobController extends Controller
{
public function postEntry(Request $request, $id)
{
$validator = Validator::make($request);
if ($validator->fails()) {
return redirect()->route('entry')->withInput()->withErrors($validator);
}
try {
$entry = new Entry();
$entry->id = User::find($id)->uid;
$entry->value = $request->input(‘name');
$entry->hoge = Session::get(‘hogehoge');
$entry->save();
Mail::send('emails.welcome', $request, function($message){
$message->to($request)
->subject(‘登録できました');
});
Log::info('entry', $requests);
return view('entry.success')->with('data', $entry);
・・・
1. 「どこでもFacade」を疑う
• Facadeのいいところ・様々な機能クラスを簡単に扱える・どこでも使える・Laravelの特徴とも言える機能
⇒ 知らない間に密結合なクラスに…
• テストを書くのがすごく大変
1. 「どこでもFacade」を疑う
• Facadeを使う前にちょっと考える
↓その機能はそのクラスで使うべきものか?
• 機能を外から与える(密結合に早く気付けるようにする)
• 必要に応じてクラス・階層を分ける
2. Model=Eloquent を疑う
• EloquentのおかげでDB連携が簡単にでき
• Eloquentを使う事で起きる制限事項・1テーブル=1Model・複合キーは考慮されてない・created_at, updated_at
⇒ テーブル設計がFWに引っ張られる
3. FWのコアに触れる
• Laravelはいろんな機能が揃っていて、それらを組み合わせれば何となく動いてとても便利だけど…
⇒ 何がどう動いてるかわからないのはなんとなく気持ちが悪い。
⇒ 本番投入後に vendor 配下でエラーが出たら?初見で解析するのは辛い
• 割と辛い
• でも、各機能がなぜ動いてるかわかる・オートロードの仕組み・artisan optimize がなぜ有効か・設定ファイルを読み込むところ・サービスプロバイダが機能を登録するところ・サービスコンテナの動き…
↓Laravelをちょっと知った気持ちになる
3. まずindex.phpを読んでみる