Laravel - 変数 - グローバル変数(さらに)


 クラウディア


1. 概要
2. 変数定義
3. 設定
4. app で使用
5. .blade.php で使用
6. 参考サイト

1. 概要

 前ページのやり方では、いくつも変数があるときに、いちいち覚えていられないのだ。  まとめて、定義したいものです。

2. 変数定義

 変数定義用のクラスを作成します。  「AppValue」というクラス名(予約されていなければ、なんでもいい)にしておきます。

app/Services/AppValue.php

<?php
namespace App\Services;

class AppValue
{
	public ?string $hogehoge = "";
	public ?string $fugafuga = "";
	public ?string $path = null;
}
 てな感じで、グローバル変数で使用したい、変数の型・変数名・初期値を定義しておきます。

3. 設定

 登録と設定は、基本的に、下記のような感じで書きます。

app/Providers/AppServiceProvider.php

<?php
namespace App\Providers;

use App\Services\AppValue;
use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    public function register(): void
    {
		$this->app->singleton(AppValue::class, fn() => new AppValue());
    }

    public function boot(): void
    {
		$appValue = app(AppValue::class);
		$appValue->hogehoge = "なんとか";
		$appValue->fugafuga = "かんとか";

		view()->share('appValue', $appValue);

    	View::composer('*', function ($view) use ($appValue)
		{
			if (is_null($appValue->path))
			{
				$appValue->path = $view->getPath();
			}
    	});
    }
}
 12行目は、シングルトンとして登録しておりますでな、インスタンスがひとつなので、内部の変数は設定したものを持ち回りできるわけです。  基本的には、「boot()」で値を設定しておくのがいいでしょう。  途中で値を変更することもできます。  23~29行目は、リクエストに対して表示する「.blade.php」のフルパスを設定しています。  これに関しての詳細は、「PHP - Laravel - ビュー(blade)」の「blade ファイル名を取得」ページをご参照ください。

4. app で使用

 定義・設定した変数を、「app」配下の「.php」で使う際は。

use App\Services\AppValue;

app(AppValue::class)->hogehoge
 と「use」さえしておけば、「app(AppValue::class)->」で、参照・設定できます。

5. .blade.php で使用

 「.blade.php」で使用する場合は。  「@php」「@endphp」で囲んでいる中では、前項と同様の書き方ができますし。  前項の21行で、「view()->share()」していますので。

$appValue->hogehoge
 という書き方ができます。

{{ $appValue->hogehoge }}
 とまんま、変数を出力させることもできます。

6. 参考サイト

 本ページは、「Gemini」伍長を参考にさせていただきました。

EaseUS
AbemaTV 無料体験