- 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」くんを参考にさせていただきました。
|