Laravel: Как работает этот код при разрешении службы? - PullRequest
0 голосов
/ 05 июня 2018

В частности, я смотрю на этот бит $this->instances[$abstract] снизу, но я не уверен, как isset($this->instances[$abstract] оценивается как true, даже если индекс не существует.

Illuminate\Container\Container:

public function make($abstract, array $parameters = [])
{
    $abstract = $this->getAlias($this->normalize($abstract));

    if (isset($this->instances[$abstract])) {
        return $this->instances[$abstract]; // <-- this!
    }
   ...
}

Свойство массива $instances не имеет установленного индекса $abstract, но все еще возвращает соответствующий сервис.В моем случае $abstract - это cache, а возвращаемый объект - Illuminate\Cache\CacheManager.Что это за магия?

Точка останова Xdebug при вызове Cache::has($key) ниже.$this->instances показано и $abstract равно cache.

xdebug

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...