В частности, я смотрю на этот бит $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
.