Submit Search
Upload
20180425 phpstudy-my-first-laravel
•
Download as PPTX, PDF
•
0 likes
•
2,273 views
Masanori Hayashi
Follow
2018.04.25 PHP勉強会の資料
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 20
Download now
Recommended
「クソコード」言い換えのご提案 - 2018-12-15 #phpcon2018
「クソコード」言い換えのご提案 - 2018-12-15 #phpcon2018
Masanori Hayashi
20180627 phpstudy 長いものに巻かれよう
20180627 phpstudy 長いものに巻かれよう
Masanori Hayashi
人のレガシーを笑うな - レガシー感謝の日
人のレガシーを笑うな - レガシー感謝の日
Masanori Hayashi
レビューの自動化事業について
レビューの自動化事業について
ssuserf1e090
レビューの自動化事業について
レビューの自動化事業について
ssuserf1e090
若者が勉強会に参加しない問題
若者が勉強会に参加しない問題
Makoto Henmi
開発フローを改善した時の昔話
開発フローを改善した時の昔話
Makoto Henmi
Njug 20180414
Njug 20180414
小川 昌吾
Recommended
「クソコード」言い換えのご提案 - 2018-12-15 #phpcon2018
「クソコード」言い換えのご提案 - 2018-12-15 #phpcon2018
Masanori Hayashi
20180627 phpstudy 長いものに巻かれよう
20180627 phpstudy 長いものに巻かれよう
Masanori Hayashi
人のレガシーを笑うな - レガシー感謝の日
人のレガシーを笑うな - レガシー感謝の日
Masanori Hayashi
レビューの自動化事業について
レビューの自動化事業について
ssuserf1e090
レビューの自動化事業について
レビューの自動化事業について
ssuserf1e090
若者が勉強会に参加しない問題
若者が勉強会に参加しない問題
Makoto Henmi
開発フローを改善した時の昔話
開発フローを改善した時の昔話
Makoto Henmi
Njug 20180414
Njug 20180414
小川 昌吾
国産ランキングプラグインを作ってみた件(2016/10/15)
国産ランキングプラグインを作ってみた件(2016/10/15)
Hiroyuki Ishikawa
Bydstudy#26 sato
Bydstudy#26 sato
beyond Co., Ltd.
Shiny-Serverあれこれ
Shiny-Serverあれこれ
Kazuya Wada
ES2015の今とこれから
ES2015の今とこれから
lion-man
20190910 rpalt
20190910 rpalt
Hironari Ono
20191204_WordPressの教科書出版記念イベント_WordPress開発のツボ_森下
20191204_WordPressの教科書出版記念イベント_WordPress開発のツボ_森下
Tomoya Hokari
20191129 kyotoLT
20191129 kyotoLT
Otazo Man
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
Kenichi Mukai
第67回PHP勉強会LT(その2)
第67回PHP勉強会LT(その2)
Hideyuki Shimooka
#phpmatsuri LT大会システムの中身
#phpmatsuri LT大会システムの中身
Hisateru Tanaka
ML Opsのススメ
ML Opsのススメ
紀彦 中林
これができたらエンジニア|YAPC::Asia 2015 LT rejected
これができたらエンジニア|YAPC::Asia 2015 LT rejected
Takahiro YAMAGUCHI
Rails5クイックスタート
Rails5クイックスタート
Hirata Tomoko
Atnd地域検索作ったよー
Atnd地域検索作ったよー
Ohishi Mikage
HTTPメッセージ、PHPの 事情ば分かっとっと?
HTTPメッセージ、PHPの 事情ば分かっとっと?
sasezaki
How Would You Like Component Management System
How Would You Like Component Management System
Hidetaka Okamoto
フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由
Kenichi Mukai
Ruby on vim yokohama.vim発表資料
Ruby on vim yokohama.vim発表資料
Shohei Kobayashi
Webの勉強会#11
Webの勉強会#11
MarlboroLand
Yahoo!アフィリエイトソン最優秀賞者に学ぶ Swift講座
Yahoo!アフィリエイトソン最優秀賞者に学ぶ Swift講座
Masaru Gushiken
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
Masahito Zembutsu
スクレイピングその後
スクレイピングその後
Tomoki Hasegawa
More Related Content
What's hot
国産ランキングプラグインを作ってみた件(2016/10/15)
国産ランキングプラグインを作ってみた件(2016/10/15)
Hiroyuki Ishikawa
Bydstudy#26 sato
Bydstudy#26 sato
beyond Co., Ltd.
Shiny-Serverあれこれ
Shiny-Serverあれこれ
Kazuya Wada
ES2015の今とこれから
ES2015の今とこれから
lion-man
20190910 rpalt
20190910 rpalt
Hironari Ono
20191204_WordPressの教科書出版記念イベント_WordPress開発のツボ_森下
20191204_WordPressの教科書出版記念イベント_WordPress開発のツボ_森下
Tomoya Hokari
20191129 kyotoLT
20191129 kyotoLT
Otazo Man
What's hot
(7)
国産ランキングプラグインを作ってみた件(2016/10/15)
国産ランキングプラグインを作ってみた件(2016/10/15)
Bydstudy#26 sato
Bydstudy#26 sato
Shiny-Serverあれこれ
Shiny-Serverあれこれ
ES2015の今とこれから
ES2015の今とこれから
20190910 rpalt
20190910 rpalt
20191204_WordPressの教科書出版記念イベント_WordPress開発のツボ_森下
20191204_WordPressの教科書出版記念イベント_WordPress開発のツボ_森下
20191129 kyotoLT
20191129 kyotoLT
Similar to 20180425 phpstudy-my-first-laravel
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
Kenichi Mukai
第67回PHP勉強会LT(その2)
第67回PHP勉強会LT(その2)
Hideyuki Shimooka
#phpmatsuri LT大会システムの中身
#phpmatsuri LT大会システムの中身
Hisateru Tanaka
ML Opsのススメ
ML Opsのススメ
紀彦 中林
これができたらエンジニア|YAPC::Asia 2015 LT rejected
これができたらエンジニア|YAPC::Asia 2015 LT rejected
Takahiro YAMAGUCHI
Rails5クイックスタート
Rails5クイックスタート
Hirata Tomoko
Atnd地域検索作ったよー
Atnd地域検索作ったよー
Ohishi Mikage
HTTPメッセージ、PHPの 事情ば分かっとっと?
HTTPメッセージ、PHPの 事情ば分かっとっと?
sasezaki
How Would You Like Component Management System
How Would You Like Component Management System
Hidetaka Okamoto
フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由
Kenichi Mukai
Ruby on vim yokohama.vim発表資料
Ruby on vim yokohama.vim発表資料
Shohei Kobayashi
Webの勉強会#11
Webの勉強会#11
MarlboroLand
Yahoo!アフィリエイトソン最優秀賞者に学ぶ Swift講座
Yahoo!アフィリエイトソン最優秀賞者に学ぶ Swift講座
Masaru Gushiken
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
Masahito Zembutsu
スクレイピングその後
スクレイピングその後
Tomoki Hasegawa
勉強会参加のススメ
勉強会参加のススメ
Yoshito Tabuchi
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
Koichi ITO
Web∩アプリ
Web∩アプリ
Noritada Shimizu
マイクロサービスにおける非同期アーキテクチャ
マイクロサービスにおける非同期アーキテクチャ
ota42y
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
株式会社 オープンソース・ワークショップ
Similar to 20180425 phpstudy-my-first-laravel
(20)
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
第67回PHP勉強会LT(その2)
第67回PHP勉強会LT(その2)
#phpmatsuri LT大会システムの中身
#phpmatsuri LT大会システムの中身
ML Opsのススメ
ML Opsのススメ
これができたらエンジニア|YAPC::Asia 2015 LT rejected
これができたらエンジニア|YAPC::Asia 2015 LT rejected
Rails5クイックスタート
Rails5クイックスタート
Atnd地域検索作ったよー
Atnd地域検索作ったよー
HTTPメッセージ、PHPの 事情ば分かっとっと?
HTTPメッセージ、PHPの 事情ば分かっとっと?
How Would You Like Component Management System
How Would You Like Component Management System
フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由
Ruby on vim yokohama.vim発表資料
Ruby on vim yokohama.vim発表資料
Webの勉強会#11
Webの勉強会#11
Yahoo!アフィリエイトソン最優秀賞者に学ぶ Swift講座
Yahoo!アフィリエイトソン最優秀賞者に学ぶ Swift講座
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
スクレイピングその後
スクレイピングその後
勉強会参加のススメ
勉強会参加のススメ
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
Web∩アプリ
Web∩アプリ
マイクロサービスにおける非同期アーキテクチャ
マイクロサービスにおける非同期アーキテクチャ
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
More from Masanori Hayashi
JAWS DAYS 2017直前! AWS総復習
JAWS DAYS 2017直前! AWS総復習
Masanori Hayashi
Phpstudy98
Phpstudy98
Masanori Hayashi
Php blt-vol2
Php blt-vol2
Masanori Hayashi
Symfony meetup-7
Symfony meetup-7
Masanori Hayashi
Glt vol49
Glt vol49
Masanori Hayashi
Glt vol48
Glt vol48
Masanori Hayashi
ボトルネックを解消せよ
ボトルネックを解消せよ
Masanori Hayashi
Glt vol47
Glt vol47
Masanori Hayashi
PHP framework Phalcon
PHP framework Phalcon
Masanori Hayashi
俺的世界で一番暑い夏
俺的世界で一番暑い夏
Masanori Hayashi
Soft bank ssl仕様変更について
Soft bank ssl仕様変更について
Masanori Hayashi
20081120 lt11th ace
20081120 lt11th ace
Masanori Hayashi
More from Masanori Hayashi
(12)
JAWS DAYS 2017直前! AWS総復習
JAWS DAYS 2017直前! AWS総復習
Phpstudy98
Phpstudy98
Php blt-vol2
Php blt-vol2
Symfony meetup-7
Symfony meetup-7
Glt vol49
Glt vol49
Glt vol48
Glt vol48
ボトルネックを解消せよ
ボトルネックを解消せよ
Glt vol47
Glt vol47
PHP framework Phalcon
PHP framework Phalcon
俺的世界で一番暑い夏
俺的世界で一番暑い夏
Soft bank ssl仕様変更について
Soft bank ssl仕様変更について
20081120 lt11th ace
20081120 lt11th ace
20180425 phpstudy-my-first-laravel
1.
My First Laravel PHP勉強会 2018.4.25(Wed) @m_norii
2.
About me 林 正紀
(HAYASHI Masanori) 1974年09月12日生 (43歳) ・・ 埼玉生まれ埼玉育ち埼玉川越市在住 埼玉大学/大学院・数学専攻 埼玉土着エンジニア 勤務 • @m_norii • http://norii.hatenablog.com/ • https://www.facebook.com/m.norii • https://www.slideshare.net/m_norii
3.
エキテン -- 国内最大級オールジャンル口コミサイト
4.
私のWeb Application Framework歴 Zend
Framework 1 symfony1 Symfony2 FuelPHP CakePHPとCodeIgniterはかじった程度
5.
案件:コーポレートサイト https://www.designone.jp/
6.
要件 • フロント側 • 動的機能はニュースと問い合わせのみ •
デザイナー要望:テンプレートエンジンいれたい • バックヤード側 • ニュースを更新する機能 • ログイン認証
7.
選択したスタック:フロント • Linux/Nginx/MySQL/PHP • https://github.com/duncan3dc/blade •
動的機能がほとんどない要件なので Laravelフルセットは必要なかった • ただテンプレートエンジンは必要だった • Twigも検討したが、社内別プロジェクトで Laravelを使っていたので デザイナーもBladeの知見があった • Blade単体※で動くようにしたものをみつけた 検証して問題無さそうなので採用した ※単体と言っても依存ライブラリはまあまあある • https://github.com/vlucas/phpdotenv • 環境依存情報の切り出し
8.
選択したスタック:バックヤード • Laravel • ニュース記事のCRUDだけにしてはリッチすぎると も思ったが、認証やページネーションなど地味なと ころの実装に時間かけたくなかった •
TinyMCE • JavaScriptのWYSIWYGエディタ • WordPressでも使われているやつ • ニュース記事本文の編集に利用 • Jbimages • TinyMCEのプラグイン • 画像をアップロードできるようにする
9.
バックヤード画面
10.
Laravel採用してよかったところ • ドメインが複雑でなければさくさく作れる • 今回はうってつけだった •
php artisan make:auth が簡単・便利 • ページネーションが簡単・便利 • フラッシュデータが簡単・便利 • 次のリクエスト間だけセッションにアイテムを保存 • 「データを登録しました」みたいなやつ • ファイルアップロードも実装が楽 • Blade、機能が洗練されてて使いやすい
11.
Laravel はまったところ URL生成系のメソッド <script src="{{
asset('/js/app.js') }}" defer></script> こう出力される ↓ <script src="http://example.com/js/app.js" defer></script> <form action="{{ url('/articles') }}" method="post" name="article"> こう出力される ↓ <form action="http://example.com/articles" method="post" name="article"> <form id="logout-form" action="{{ route('/logout') }}" method="POST"> こう出力される ↓ <form id="logout-form" action="http://example.com/logout" method="POST">
12.
なぜはまったか? • 最初ローカル環境では、http (非SSL)
で開発 を進めていた • 自己署名証明書いれてもよかったが、結局ブラウザ の警告画面がうざいので入れなかった • ある程度開発が目処立って 検証用サーバ(https環境)にアップしたらい ろいろリンクが機能しなかった • 調べていったら、先のメソッドたちがURLをフルで 出力しているのが原因だった
13.
どう直したか? 結局同一ドメインだし、メソッド通すのやめた <script src="{{ asset('/js/app.js')
}}" defer></script> ↓ <script src="/js/app.js" defer></script> <form action="{{ url('/articles') }}" method="post" name="article"> ↓ <form action="/articles" method="post" name="article"> <form id="logout-form" action="{{ route('/logout') }}" method="POST"> ↓ <form id="logout-form" action="/logout" method="POST">
14.
フルURL生成もう1つ • ページネーションが生成するURL <a class="page-link"
href="{{ $paginator->previousPageUrl() }}" rel="prev">‹</a> <a class="page-link" href="{{ $url }}">{{ $page }}</a> <a class="page-link" href="{{ $paginator->nextPageUrl() }}" rel="next">›</a> ↓ <a class="page-link" href="http://example.com/articles?page=3" rel="prev">‹</a> <a class="page-link" href="http://example.com/articles?page=4">{{ $page }}</a> <a class="page-link" href="http://example.com/articles?page=5" rel="next">›</a>
15.
そもそもページネーションって ページネーション用パラメータ以外、同一の URLですよね? この時、リンクURLはここまで省略できる <a href="http://example.com/articles?page=3"> ↓ ドメインいらない <a
href="/articles?page=3"> ↓ パスも同じだからいらない <a href="?page=3">
16.
こう直した • strstr() を使って
? の前を除去 • もっとスマートな直し方があればいいのだが <a class="page-link" href="{{ $paginator->previousPageUrl() }}" rel="prev">‹</a> <a class="page-link" href="{{ $url }}">{{ $page }}</a> <a class="page-link" href="{{ $paginator->nextPageUrl() }}" rel="next">›</a> ↓ <a class="page-link" href="{{ strstr($paginator->previousPageUrl(), '?') }}" rel="prev">‹</a> <a class="page-link" href="{{ strstr($url,'?') }}">{{ $page }}</a> <a class="page-link" href="{{ strstr($paginator->nextPageUrl(), '?') }}" rel="next">›</a> ※出力 <a class="page-link" href="?page=3" rel="prev">‹</a> <a class="page-link" href="?page=4">{{ $page }}</a> <a class="page-link" href="?page=5" rel="next">›</a>
17.
はまったところ(2) 「HTMLエスケープはしたいが、改行は<br>に 変換したい」場合 {{ nl2br($form['content']) }} だと、<br>がエスケープされて出力されてしまう {!!
nl2br($form['content']) !!} だと、<br>は出力されるが、他のHTMLタグも出力してしまう ↓ {!! nl2br(e($form['content'])) !!} で、<br>だけをエスケープせずに出力できる ・・・けど、なんかスマートじゃない感
18.
他、細かいところ • カスタムエラーページの作り方がわからん • .env
何に使うかわからない項目がある • DBとかMailとかRedisはいいとして • 「 PUSHER_APP」って何? • 結局使わなそうなので設定ごと消したけど • URLの話、そもそも開発環境のSSL証明書問題 みんなどうしてるんだろう?
19.
ちょっとハマりどころもあったけど Laravel開発は楽しい! エンジニアが本来注力すべきところに集中でき る感じが良い!
20.
ご清聴ありがとうございました
Download now