ラボ > Laravel、Lumen:views関連
laravel8 ビューの中で独自関数を使う(@inject())
作成日:2022-12-29, 更新日:2023-01-05
基本
「app\Lib\CommonLib.php」を使いたいとき、いくつか方法がある
- フルPATH指定
- 「@inject()」を使う
フルPATH指定
<?php echo App\Lib\CommonLib::xxx(xxx); ?>
※小文字からはじまる「app」じゃなく大文字からはじまる「App」を使わないとエラーになる
「@inject()」を使う
▼「App\Lib\CommonLib.php」を使いたいとき
@inject('CommonLib', 'App\Lib\CommonLib') <?php echo $CommonLib->xxx(xxx); // echo $CommonLib::xxx(xxx); // staticのとき ?>
※「@inject()」の引数の一つ目がビューで使う変数名。二つ目が対象ライブラリのPATH
※小文字からはじまる「app」じゃなく大文字からはじまる「App」を使わないとエラーになる
▼「<?php echo $CommonLib->xxx(xxx); ?>」はコッチでもOK
{{ $CommonLib->xxx(xxx) }}
※本来はコッチを使うと思う。
「{{ xxx }}」と「{!! xxx !!}」、「<?php echo xxx ?>」
- 「{{ xxx }}」はXSS攻撃の対策済み
- 「{!! xxx !!}」はただのecho文
- 「<?php echo xxx ?>」はただのecho文
▼「{{ xxx }}」は下記のような出力と同じ
<?php echo htmlspecialchars(xxx); ?>
「app」と「App」
ファイルを見ると「app/xxx」とあるんだけど「app\xxx」として使おうとするとエラーになる
調べると「composer.json」で「app」は「App」と設定しているとのこと
▼composer.json
~ 省略 ~ "autoload": { "psr-4": { "App\\": "app/", ~ 省略 ~