Что означает «это сопровождается квадратными скобками» в PHP?

Я нашел один блок кода в Laravel, как показано ниже:

/**
* Register a "before" application filter.
*
* @param  \Closure|string  $callback
* @return void
*/
public function before($callback)
{
return $this['router']->before($callback);
}

Что значит $this['router'] значит здесь? Может кто-нибудь объяснить $this['xx'] форме? Это массив?

-1

Решение

Тот факт, что ваша переменная называется $this означает, что это не может быть обычный массив — это имя переменной зарезервировано для текущего экземпляра класса.

Использование квадратных скобок для доступа к объекту является признаком того, что класс реализует ArrayAccess интерфейс — то есть к нему можно получить доступ, используя операторы, обычно зарезервированные для базовых массивов.

Получение значения из класса, который реализует ArrayAccess использование записи в квадратных скобках вызывает класс offsetGet метод, с предоставленным ключом в качестве $offset аргумент. Наиболее распространенное использование — разрешить доступ к переменным-членам класса, но сам класс может выбрать выполнение любого действия в этом методе.

В вашем случае, я думаю, вы смотрите на класс приложения Laravel, который приведет к маршрутизатор элемент, возвращаемый из контейнера ввода зависимостей.

4

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

$this['router'] ссылки на сервис роутера в сервисном контейнере laravel.
Контейнер сервисов (или контейнер внедрения зависимостей) — это просто объект PHP, который управляет созданием сервисов (т.е. объектов).

увидеть :
Какова концепция сервисного контейнера в Laravel?

2

Это просто означает, что это массив. Вы используете квадратные скобки с ключом (которым может быть имя (строка, заключенная в кавычки) или число), чтобы определить правильное значение из массива.

В вашем коде $this['router'] ссылается на массив, который содержится в классе, который вы просматриваете, и это идентификатор для выбора того, что ему нужно, router быть ключом.

1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector