Я думаю, ваш вопрос, в конечном счете, может быть сводились к следующему:
Где я могу установить долговечное значение, доступное глобально в моем приложении?
Очевидным ответом является то, что это зависит. От этого зависит несколько факторов:
- Будет ли ценность когда-либо отличаться или она будет одинаковой для всех?
- Как долго длится долго? (Навсегда? День? Один из просмотра «сессия»?)
Config
Если значение является одинаковым для всех, и редко изменится, самое лучшее место, вероятно, поместить это в конфигурации файл где-то под app/config
, например app/config/companyname.php
:
<?php
return [
'somevalue' => 10,
];
Вы можете получить это значение из любого места в приложении с помощью Config::get('companyname.somevalue')
Session
Если значение, которое вы намерены хранить будет разные для каждого пользователя , наиболее логичным местом для размещения является Session
. Это то, о чем вы говорите в своем вопросе, но используете неправильный синтаксис.Правильный синтаксис для хранения переменной в сессии является:
Session::put('somekey', 'somevalue');
Правильный синтаксис для извлечения его обратно позже есть:
Session::get('somekey');
Насколько когда для выполнения этих операций, что немного вам решать. Я бы, вероятно, выбрать route filter если на Laravel 4.x или Middleware при использовании 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'))
;
});
, что является незаконным PHP. левая сторона операции присваивания не может быть выражением. 'set()' - вызов функции/метода - он может только ВОЗВРАТИТЬ значение, вы не можете присвоить ему значение. –
Это очень хорошо документировано здесь: http://laravel.com/docs/5.0/session – baao