Я нашел один блок кода в 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']
форме? Это массив?
Тот факт, что ваша переменная называется $this
означает, что это не может быть обычный массив — это имя переменной зарезервировано для текущего экземпляра класса.
Использование квадратных скобок для доступа к объекту является признаком того, что класс реализует ArrayAccess
интерфейс — то есть к нему можно получить доступ, используя операторы, обычно зарезервированные для базовых массивов.
Получение значения из класса, который реализует ArrayAccess
использование записи в квадратных скобках вызывает класс offsetGet
метод, с предоставленным ключом в качестве $offset
аргумент. Наиболее распространенное использование — разрешить доступ к переменным-членам класса, но сам класс может выбрать выполнение любого действия в этом методе.
В вашем случае, я думаю, вы смотрите на класс приложения Laravel, который приведет к маршрутизатор элемент, возвращаемый из контейнера ввода зависимостей.
$this['router']
ссылки на сервис роутера в сервисном контейнере laravel.
Контейнер сервисов (или контейнер внедрения зависимостей) — это просто объект PHP, который управляет созданием сервисов (т.е. объектов).
Это просто означает, что это массив. Вы используете квадратные скобки с ключом (которым может быть имя (строка, заключенная в кавычки) или число), чтобы определить правильное значение из массива.
В вашем коде $this['router']
ссылается на массив, который содержится в классе, который вы просматриваете, и это идентификатор для выбора того, что ему нужно, router
быть ключом.