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