{{}}ってなんだろう?
よく、Bladeを書くときに、
{{ $user->name }}
みたいな書き方をすると思います。
データを取得して出力するのはわかりますが、具体的に何をしてるのでしょう?
echoとe関数を呼ぶ
上のコードですが、Laravelを通して変換すると、次のコードに変換されます。
<?php echo e($user->name) ?>
1.データをe関数に通す
2.e関数の結果をecho(画面に出力)する
の2つが行われます。では、e関数とは何でしょうか?
e関数は、htmlentities関数の代わり
e()は、Laravelが提供しているヘルパ関数で、やっていることは、ほぼhtmlentities関数と同じです。
Laravelのバージョンによっては、とある条件でhtmlentities関数を動かさないのですが、今回は割愛します。
つまり、HTML文字をエスケープして、画面に表示してくれるわけですね。
なので、さっきのコードはだいたい下と一緒です。
<?php echo htmlentities($user->name) ?>
【おまけ】htmlentities関数とは?
簡単に言うと、 <
とかの記号を \<
に変換してくれます。
htmlspecialcharsを知っている人は、それの上位互換的な印象でだいたいあっています。
htmlspecialcharsとの違いとかは、この記事では割愛いたします。
これの嬉しいところは、 <div>
って文字を表示させたいけど、 <div>というタグ
と読み込まれてしまう。
<div>
と変換すると、ブラウザ側はこの文字を <div>という文字
と認識してくれます。
公式ドキュメントのURLと引用テキスト
e関数は指定された文字列にhtmlentitesを実行します。
echo e('<html>foo</html>'); // <html>foo</html>