Как создать переменную в Laravel в классе чтоб она была видна внутри функций этого класса?

Имеется код в контроллере Laravel, которая использует функции хелпера, в котором используется фасад Request:

public static $regions, $current_region;

    public function __construct()
    {
        $regions = RegionInfo::get_region($request)[0];
        $current_region = RegionInfo::get_region($request)[1];
    }

Однако, она выдаёт ошибку Undefined variable $request.

В общем, как создать переменные $regions, $current_region так, чтобы они были видны другим функциям контроллера?


Ответы (1 шт):

Автор решения: Vanya228

Для доступа к статическим переменным внутри класса используйте ключевое слово self

self::$regions = RegionInfo::get_region($request)[0];
self::$current_region = RegionInfo::get_region($request)[1];

Но у вас проблема в том, что класс не знает что такое $request, о чем явно говорит ошибка. Откуда у вас берется $request ?

Во-вторых, точно ли нужны вам статические значения свойств класса? Если вы их динамически меняете при каждом создании экземпляра класса, то лучше их сделать динамическими. Например так:

public $region; 
public $current_region;

public fucntion __construct(Requets $request)
{
    $this->region = RegionInfo::get_region($request)[0];
    $this->current_region = RegionInfo::get_region($request)[1];
}

Не экономьте стрчоки в коде. Используйте статику только там, где она действительно нужна.

→ Ссылка