あなたの質問は最終的にこれに要約できると思います:
アプリケーションでグローバルにアクセスできる有効期間の長い値はどこで設定できますか?
明らかな答えは、依存するということです。それが依存するのは、いくつかの要因です。
- 価値は変わるのでしょうか、それともすべての人にとって同じになるのでしょうか?
- 長寿とは具体的にどのくらいの期間ですか?(永遠? 1 日? 1 回のブラウジング「セッション」?)
設定
値が誰にとっても同じであり、めったに変更されない場合、おそらくそれを配置するのに最適な場所は、設定ファイルの下app/config
のどこかにあります。たとえば、次のようになりますapp/config/companyname.php
。
<?php
return [
'somevalue' => 10,
];
アプリケーションのどこからでもこの値にアクセスできます。Config::get('companyname.somevalue')
セッション
保存しようとしている値がユーザーごとに異なる場合、それを配置する最も論理的な場所は ですSession
。これはあなたの質問で言及しているものですが、間違った構文を使用しています。Session に変数を格納する正しい構文は次のとおりです。
Session::put('somekey', 'somevalue');
後で取得するための正しい構文は次のとおりです。
Session::get('somekey');
これらの操作をいつ実行するかは、あなた次第です。Laravel 4.x の場合はルート フィルターを選択し、 Laravel 5 を使用する場合はミドルウェアを選択します。以下は、別のクラスを利用して実際に値を取得するルート フィルターの使用例です。
// File: ValueMaker.php (saved in some folder that can be autoloaded)
class ValueMaker
{
public function makeValue()
{
return 42;
}
}
// File: app/filters.php is probably the best place
Route::filter('set_value', function() {
$valueMaker = app()->make('ValueMaker');
Session::put('somevalue', $valueMaker->makeValue());
});
// File: app/routes.php
Route::group(['before' => 'set_value'], function() {
// Value has already been 'made' by this point.
return View::make('view')
->with('value', Session::get('somevalue'))
;
});