Suche senden
Hochladen
Laravel における Blade 拡張のツラミ
•
1 gefällt mir
•
2,196 views
Shohei Okada
Folgen
2018-07-25 開催の「第128回 PHP勉強会@東京」におけるLT資料です https://phpstudy.doorkeeper.jp/events/77255
Weniger lesen
Mehr lesen
Software
Melden
Teilen
Melden
Teilen
1 von 19
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Windows で拡張モジュールをビルドしてみた
Windows で拡張モジュールをビルドしてみた
y-uti
Unity道場aseスペシャル補足資料
Unity道場aseスペシャル補足資料
小林 信行
VCL ユーザーのための FireMonkey 入門
VCL ユーザーのための FireMonkey 入門
Jun Hosokawa
物理ベース時代のライトマップベイク奮闘記
物理ベース時代のライトマップベイク奮闘記
Silicon Studio Corporation
Adobe AIR で作る カジュアルゲーム開発
Adobe AIR で作る カジュアルゲーム開発
KLab Inc. / Tech
3 tips of Laravel
3 tips of Laravel
Kazuaki KURIU
Laravelでfacadeを使わない開発
Laravelでfacadeを使わない開発
Kenjiro Kubota
バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話
バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話
Kentarou Takeda
Empfohlen
Windows で拡張モジュールをビルドしてみた
Windows で拡張モジュールをビルドしてみた
y-uti
Unity道場aseスペシャル補足資料
Unity道場aseスペシャル補足資料
小林 信行
VCL ユーザーのための FireMonkey 入門
VCL ユーザーのための FireMonkey 入門
Jun Hosokawa
物理ベース時代のライトマップベイク奮闘記
物理ベース時代のライトマップベイク奮闘記
Silicon Studio Corporation
Adobe AIR で作る カジュアルゲーム開発
Adobe AIR で作る カジュアルゲーム開発
KLab Inc. / Tech
3 tips of Laravel
3 tips of Laravel
Kazuaki KURIU
Laravelでfacadeを使わない開発
Laravelでfacadeを使わない開発
Kenjiro Kubota
バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話
バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話
Kentarou Takeda
LaravelとNuxt.jsを業務で取り入れる際に得た知見 Laravel/Vue.js勉強会#4 2018/04/25
LaravelとNuxt.jsを業務で取り入れる際に得た知見 Laravel/Vue.js勉強会#4 2018/04/25
Isao Ebisujima
Laravel で API バージョニングを実装するなら
Laravel で API バージョニングを実装するなら
Shohei Okada
Laravel × レイヤードアーキテクチャをやってみている話
Laravel × レイヤードアーキテクチャをやってみている話
Shohei Okada
今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4
leverages_event
第104回 php勉強会@東京 Laravel
第104回 php勉強会@東京 Laravel
JunKeun Lee
Laravelとテストについて
Laravelとテストについて
Takeo Noda
Laravel_オープンソースカンファレンスhokkaido_JP_2014
Laravel_オープンソースカンファレンスhokkaido_JP_2014
Yuuki Takezawa
転職とLaravel
転職とLaravel
kasikasikasi
チームで「きちんと」Laravel を使っていくための取り組み
チームで「きちんと」Laravel を使っていくための取り組み
Shohei Okada
Phpcon tokyo 20120_bigginer
Phpcon tokyo 20120_bigginer
Hideo Kashioka
Laravel4で運用するサービス,そしてlaravel5へ
Laravel4で運用するサービス,そしてlaravel5へ
Nʎ Nkogues
LaravelとNuxt.jsを業務で取り入れる際に得た知見
LaravelとNuxt.jsを業務で取り入れる際に得た知見
ssuserb6dacf
PHPCON_TOKYO_2022_Bigginer.pptx
PHPCON_TOKYO_2022_Bigginer.pptx
Hideo Kashioka
Laravel meetup5(Laravel meet NewSQL/VoltDB )
Laravel meetup5(Laravel meet NewSQL/VoltDB )
Yuuki Takezawa
<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー
Tatsuyoshi Mashiko
101210 supreme web adobe seminar Nagoya
101210 supreme web adobe seminar Nagoya
tamotsu toyoda
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
Yuuki Takezawa
第5回名古屋若手Webエンジニア交流会
第5回名古屋若手Webエンジニア交流会
Yuta Mizui
OSC福岡 20111203
OSC福岡 20111203
Hiroshi Bunya
SwaggerとAPIのデザイン
SwaggerとAPIのデザイン
Kazuhiro Hara
「登壇しているひとは偉い」という話
「登壇しているひとは偉い」という話
Shohei Okada
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
Shohei Okada
Weitere ähnliche Inhalte
Ähnlich wie Laravel における Blade 拡張のツラミ
LaravelとNuxt.jsを業務で取り入れる際に得た知見 Laravel/Vue.js勉強会#4 2018/04/25
LaravelとNuxt.jsを業務で取り入れる際に得た知見 Laravel/Vue.js勉強会#4 2018/04/25
Isao Ebisujima
Laravel で API バージョニングを実装するなら
Laravel で API バージョニングを実装するなら
Shohei Okada
Laravel × レイヤードアーキテクチャをやってみている話
Laravel × レイヤードアーキテクチャをやってみている話
Shohei Okada
今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4
leverages_event
第104回 php勉強会@東京 Laravel
第104回 php勉強会@東京 Laravel
JunKeun Lee
Laravelとテストについて
Laravelとテストについて
Takeo Noda
Laravel_オープンソースカンファレンスhokkaido_JP_2014
Laravel_オープンソースカンファレンスhokkaido_JP_2014
Yuuki Takezawa
転職とLaravel
転職とLaravel
kasikasikasi
チームで「きちんと」Laravel を使っていくための取り組み
チームで「きちんと」Laravel を使っていくための取り組み
Shohei Okada
Phpcon tokyo 20120_bigginer
Phpcon tokyo 20120_bigginer
Hideo Kashioka
Laravel4で運用するサービス,そしてlaravel5へ
Laravel4で運用するサービス,そしてlaravel5へ
Nʎ Nkogues
LaravelとNuxt.jsを業務で取り入れる際に得た知見
LaravelとNuxt.jsを業務で取り入れる際に得た知見
ssuserb6dacf
PHPCON_TOKYO_2022_Bigginer.pptx
PHPCON_TOKYO_2022_Bigginer.pptx
Hideo Kashioka
Laravel meetup5(Laravel meet NewSQL/VoltDB )
Laravel meetup5(Laravel meet NewSQL/VoltDB )
Yuuki Takezawa
<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー
Tatsuyoshi Mashiko
101210 supreme web adobe seminar Nagoya
101210 supreme web adobe seminar Nagoya
tamotsu toyoda
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
Yuuki Takezawa
第5回名古屋若手Webエンジニア交流会
第5回名古屋若手Webエンジニア交流会
Yuta Mizui
OSC福岡 20111203
OSC福岡 20111203
Hiroshi Bunya
SwaggerとAPIのデザイン
SwaggerとAPIのデザイン
Kazuhiro Hara
Ähnlich wie Laravel における Blade 拡張のツラミ
(20)
LaravelとNuxt.jsを業務で取り入れる際に得た知見 Laravel/Vue.js勉強会#4 2018/04/25
LaravelとNuxt.jsを業務で取り入れる際に得た知見 Laravel/Vue.js勉強会#4 2018/04/25
Laravel で API バージョニングを実装するなら
Laravel で API バージョニングを実装するなら
Laravel × レイヤードアーキテクチャをやってみている話
Laravel × レイヤードアーキテクチャをやってみている話
今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4
第104回 php勉強会@東京 Laravel
第104回 php勉強会@東京 Laravel
Laravelとテストについて
Laravelとテストについて
Laravel_オープンソースカンファレンスhokkaido_JP_2014
Laravel_オープンソースカンファレンスhokkaido_JP_2014
転職とLaravel
転職とLaravel
チームで「きちんと」Laravel を使っていくための取り組み
チームで「きちんと」Laravel を使っていくための取り組み
Phpcon tokyo 20120_bigginer
Phpcon tokyo 20120_bigginer
Laravel4で運用するサービス,そしてlaravel5へ
Laravel4で運用するサービス,そしてlaravel5へ
LaravelとNuxt.jsを業務で取り入れる際に得た知見
LaravelとNuxt.jsを業務で取り入れる際に得た知見
PHPCON_TOKYO_2022_Bigginer.pptx
PHPCON_TOKYO_2022_Bigginer.pptx
Laravel meetup5(Laravel meet NewSQL/VoltDB )
Laravel meetup5(Laravel meet NewSQL/VoltDB )
<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー
101210 supreme web adobe seminar Nagoya
101210 supreme web adobe seminar Nagoya
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
第5回名古屋若手Webエンジニア交流会
第5回名古屋若手Webエンジニア交流会
OSC福岡 20111203
OSC福岡 20111203
SwaggerとAPIのデザイン
SwaggerとAPIのデザイン
Mehr von Shohei Okada
「登壇しているひとは偉い」という話
「登壇しているひとは偉い」という話
Shohei Okada
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
Shohei Okada
PHP 8.0 の新記法を試してみよう!
PHP 8.0 の新記法を試してみよう!
Shohei Okada
自分たちのコードを Composer パッケージに分割して開発する
自分たちのコードを Composer パッケージに分割して開発する
Shohei Okada
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #shuuumai
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #shuuumai
Shohei Okada
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawa
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawa
Shohei Okada
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpcondo
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpcondo
Shohei Okada
Laravel でやってみるクリーンアーキテクチャ #phpconfuk
Laravel でやってみるクリーンアーキテクチャ #phpconfuk
Shohei Okada
エラー時にログに出力する情報と画面に表示する情報を分ける #LaravelTokyo
エラー時にログに出力する情報と画面に表示する情報を分ける #LaravelTokyo
Shohei Okada
スペシャリストとして組織をつくる、というキャリア
スペシャリストとして組織をつくる、というキャリア
Shohei Okada
PHP でも活用できる Makefile
PHP でも活用できる Makefile
Shohei Okada
はじめての Go 言語のプロジェクトを AWS Lambda + API Gateway でやったのでパッケージ構成を晒すよ
はじめての Go 言語のプロジェクトを AWS Lambda + API Gateway でやったのでパッケージ構成を晒すよ
Shohei Okada
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
Shohei Okada
働き方が大きく変わった 入社3年目のときのとあるエピソード
働き方が大きく変わった 入社3年目のときのとあるエピソード
Shohei Okada
Laravel の paginate は一体何をやっているのか
Laravel の paginate は一体何をやっているのか
Shohei Okada
2017 年度を振り返って ~アウトプット編~
2017 年度を振り返って ~アウトプット編~
Shohei Okada
Laravel 5.6 デフォルトの例外ハンドリング処理をまとめてみた
Laravel 5.6 デフォルトの例外ハンドリング処理をまとめてみた
Shohei Okada
プロダクトに 1 から Vue.js を導入した話
プロダクトに 1 から Vue.js を導入した話
Shohei Okada
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
Shohei Okada
Laravel Mix とは何なのか? - Laravel/Vue 勉強会 #1
Laravel Mix とは何なのか? - Laravel/Vue 勉強会 #1
Shohei Okada
Mehr von Shohei Okada
(20)
「登壇しているひとは偉い」という話
「登壇しているひとは偉い」という話
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP 8.0 の新記法を試してみよう!
PHP 8.0 の新記法を試してみよう!
自分たちのコードを Composer パッケージに分割して開発する
自分たちのコードを Composer パッケージに分割して開発する
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #shuuumai
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #shuuumai
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawa
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawa
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpcondo
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpcondo
Laravel でやってみるクリーンアーキテクチャ #phpconfuk
Laravel でやってみるクリーンアーキテクチャ #phpconfuk
エラー時にログに出力する情報と画面に表示する情報を分ける #LaravelTokyo
エラー時にログに出力する情報と画面に表示する情報を分ける #LaravelTokyo
スペシャリストとして組織をつくる、というキャリア
スペシャリストとして組織をつくる、というキャリア
PHP でも活用できる Makefile
PHP でも活用できる Makefile
はじめての Go 言語のプロジェクトを AWS Lambda + API Gateway でやったのでパッケージ構成を晒すよ
はじめての Go 言語のプロジェクトを AWS Lambda + API Gateway でやったのでパッケージ構成を晒すよ
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
働き方が大きく変わった 入社3年目のときのとあるエピソード
働き方が大きく変わった 入社3年目のときのとあるエピソード
Laravel の paginate は一体何をやっているのか
Laravel の paginate は一体何をやっているのか
2017 年度を振り返って ~アウトプット編~
2017 年度を振り返って ~アウトプット編~
Laravel 5.6 デフォルトの例外ハンドリング処理をまとめてみた
Laravel 5.6 デフォルトの例外ハンドリング処理をまとめてみた
プロダクトに 1 から Vue.js を導入した話
プロダクトに 1 から Vue.js を導入した話
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
Laravel Mix とは何なのか? - Laravel/Vue 勉強会 #1
Laravel Mix とは何なのか? - Laravel/Vue 勉強会 #1
Laravel における Blade 拡張のツラミ
1.
Laravel における Blade 拡張の
ツラミ 第128回 PHP勉強会@東京
2.
Laravel における Blade 拡張の
ツラミ 第128回 PHP勉強会@東京 誰か . 助けて .
3.
岡田 正平(おかだ しょうへい)@okashoi •
株式会社ウィルゲート 2015年新卒入社 • 開発室 ソリューションユニット 所属 • PHP, Laravel, Vue.js 3 自己紹介 Slides:
4.
4 Blade ディレクティブ( @~
)は拡張できる ※ Blade … Laravel で採用されているテンプレートエンジン
5.
5 原理説明 <?php namespace App¥Providers; use Illuminate¥Support¥ServiceProvider; class
AppServiceProvider extends ServiceProvider { public function boot() { ¥Blade::directive('hoge', function () { return '<div>fuga</div>'; }); } ↑これを書いておくと @hoge <div>fuga</div> このように展開される
6.
やりたいこと @js(/index.js) と書くと、JS ファイルのタイムスタンプを パラメータとして付与して <script
src="/js/index.js?v=1532351569"></script> といった感じで展開させる 6 例)Cache busting を考える
7.
7 とりあえずやってみる public function boot() { ¥Blade::directive('js',
function ($path) { $fullPath = public_path('js' . $path); $src = "/js{$path}?v=" . ¥File::lastModified($fullPath); return "<script src=¥"{$src}¥"></script>"; });
8.
8 とりあえずやってみる public function boot() { ¥Blade::directive('js',
function ($path) { $fullPath = public_path('js' . $path); $src = "/js{$path}?v=" . ¥File::lastModified($fullPath); return "<script src=¥"{$src}¥"></script>"; }); ファイルのタイムスタンプを取得
9.
9 とりあえずやってみる:結果 @js(/index.js) <script src="/js/index.js?v=1532351569"></script> 一見よさそう
10.
50点
11.
storage/framework/views 下のキャッシュファイルの中身もまた (view キャッシュが残っている限り) JS
ファイルのタイムスタンプが更新されても反映されない 11 なぜ? <script src="/js/index.js?v=1532351569"></script>
12.
storage/framework/views 下のキャッシュファイルの中身もまた (view キャッシュが残っている限り) JS
ファイルのタイムスタンプが更新されても反映されない ➢ Blade ディレクティブは echo をする PHP タグを文字列として返さないといけない 12 なぜ? <script src="/js/index.js?v=1532351569"></script>
13.
「文字列リテラルはシングルクオートね(^^)」を守ると 13 書き換え① public function boot() { ¥Blade::directive('js',
function ($path) { $fullPath = public_path('js' . $path); return '<?php echo ¥'<script src="/js' . $path . '?v=¥' . ¥¥File::lastModified(¥'' . $fullPath . '¥') . ¥'"></script>¥' ?>'; });
14.
「文字列リテラルはシングルクオートね(^^)」を守ると 14 書き換え① public function boot() { ¥Blade::directive('js',
function ($path) { $fullPath = public_path('js' . $path); return '<?php echo ¥'<script src="/js' . $path . '?v=¥' . ¥¥File::lastModified(¥'' . $fullPath . '¥') . ¥'"></script>¥' ?>'; }); 主にこのへんが ツライ
15.
ダブルクオートを使って変数展開を活用 15 書き換え② public function boot() { ¥Blade::directive('js',
function ($path) { $fullPath = public_path('js' . $path); return "<?php echo '<script src=¥"/js{$path}?v=' . ¥¥File::lastModified('{$fullPath}') . '¥"></script>' ?>"; }); 多少はマシ?でもやっぱりツライ
16.
動的に変わるのは下線の部分だけなので、そこだけを echo する 16 書き換え③ <script
src="/js/index.js?v=1532351569"></script>
17.
動的に変わるのは下線の部分だけなので、そこだけを echo する 17 書き換え③ <script
src="/js/index.js?v=1532351569"></script> public function boot() { ¥Blade::directive('js', function ($path) { $fullPath = public_path('js' . $path); return "<script src=¥"/js{$path}?v=<?php echo ¥¥File::lastModified('{$fullPath}') ?>¥"></script>"; }); 思ったよりツラミは改善されない
18.
• ほかにも sprintf()
とか使って頑張ってみても全然可読にならない • ていうかこんなコードメンテしたくない! • 欲しい文字列(HTMLタグ)を返すメソッドが生えたクラスを用意して Facade とかにして ってした方が圧倒的に楽 • Balde 拡張の意義って一体……? 18 そんなことより {!! ViewHelper::js('/index.js') !!}
19.
Blade 拡張のうまい使い道を 知ってる方は教えてください 19 というわけで…… 完
Jetzt herunterladen