ラボ > 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/",
~ 省略 ~