Постоянство объекта Laravel между страницами

Вот мой пример кода.

class A {
public function foo(){

}

public function bar(){
}
}class B {

$one;
function here(){
$this->one = new A();
$this->one->foo();
return View::make("route1"); //This is ok, no problems
}

function there(){
$this->one->bar(); //ERROR: Call to a member function bar() on a non-object
}
}

Мои маршруты

Route::get("/one", B@here);
Route::get("/two", B@there);

Пожалуйста, это просто показать образец. Это не правильный код.

Когда вызывается первый маршрут, все в порядке, и соответствующая страница загружается. Теперь при нажатии кнопки, которая теперь запрашивает вторую страницу, выдается ошибка …

// Вызов функции-члена bar () для необъекта

Это очевидная причина этого, и я пытался выяснить, предлагает ли Laravel способ сохранения объектов между вызовами страниц и может ли кто-нибудь помочь.

Спасибо

1

Решение

Нет хорошего способа хранить объекты между загрузками страниц, и на самом деле вы никогда бы этого не захотели. Возможным решением было бы добавить вашу зависимость в конструктор класса, чтобы он был доступен в вашем классе следующим образом:

class A {
public function foo(){}
public function bar(){}
}

class B {
protected $one;

public function __construct(A $one)
{
$this->one = $one;
}

public function here()
{
$this->one->foo(); // Available
}

public function there()
{
$this->one->bar(); // Available
}
}
4

Другие решения

Каждый запрос — это новое приложение, работающее с новыми переменными в памяти, поэтому нет постоянства, вы должны создать свой постоянный код, если он вам нужен

class B {

$one;

function here()
{
$this->one = new A();

$this->one->foo();

Session::put('one', $this->one); // persist it using Session

return View::make("route1"); //This is ok, no problems
}

function there()
{
if (Session::has('one'))
{
$one = Session::get('one'); /// get your data back from session

$one->bar();
}
}
}
4

По вопросам рекламы [email protected]