Laravel - 変数 - グローバル変数(リクエスト毎)


クラウディア 


1. 概要
2. 設定
3. 参考サイト

1. 概要

 前ページまでで、リクエスト毎に「resources/views」で使える、グローバル変数を定義する方法。  「app」でも「resources/views」でも使える、固定値のグローバル変数を定義する方法。  について述べてきました。  今度は、「app」でも「resources/views」でも使える、リクエストによって可変のグローバル変数を定義する方法について記述します。

2. 設定

 記述は。

app/Providers/AppServiceProvider.php
 内で行います。  「Laravel Framework 10.49.0」であれば、デフォルトで、下記の状態です。

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     */
    public function register(): void
    {
        //
    }

    /**
     * Bootstrap any application services.
     */
    public function boot(): void
    {
        //
    }
}
 ここで、仮に「hogehoge」という変数を定義するとするならば。  下記のように記述します。

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     */
    public function register(): void
    {
        $this->app->singleton('hogehoge', fn() => 'fugafuga');
		$this->app->singleton('piyopiyo', function () { return 'mogemoge'; });
    }

    /**
     * Bootstrap any application services.
     */
    public function boot(): void
    {
		view()->share('hogehoge', app('hogehoge'));
		view()->share('piyopiyo', $this->app->make('piyopiyo'));
    }
}
 14、23行と 15、24行がそれぞれ対になっているわけですが・・・。  この違いはよう分かっていないのですがね。  単純なものは、上の書き方がよさそうです。  ちなみに、これらの動作する順番は、「register()」「boot()」の順です。  「config()」は、これに優先するので「register()」で使用することも可能です。

3. 参考サイト

 本ページは、「ChatGPT」くんを参考にさせていただきました。

AbemaTV 無料体験