Container :: getAlias ​​($ abstract) генерирует ErrorException: недопустимый тип смещения в isset или пустой, когда $ abstract нет в $ this-> aliases [] - PullRequest
0 голосов
/ 06 мая 2018
  • Laravel Версия: 5.6.16
  • Версия PHP: 7.2.3
  • Драйвер базы данных и версия: N / A

Описание:

laravel \ framework \ src \ Illuminate \ Container \ Container.php открытая функция getAlias ​​($ abstract) выдает ErrorException: недопустимый тип смещения в isset или пустой когда $ abstract нет в $ this-> aliases []

$ this-> aliases [$ abstract] имеет значение null, а! Isset ($ this-> aliases [$ abstract]) выбрасывает ErrorException: недопустимый тип смещения в isset или пустой

$ абстрактное значение равно Модули \ Администрирование \ Тесты \ Команды \ StubJsonCommandHandler

Шаги для воспроизведения:

Запустить AdministrationControllerTest (https://github.com/proyectotau/TAU/ клон laraveldusk branch [4ef9b0e124657abed7afde0969f332bf7be95a8b])

Это ошибка или у меня ошибка? Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 02 августа 2018

В конце концов я обнаружил, что проблема заключается в отправке таких параметров, как :: class, которые нельзя использовать в качестве индекса массива. Строки должны быть вместо

0 голосов
/ 06 мая 2018

Обход

Изменение в функции getAlias ​​() ! isset($this->aliases[$abstract]) за ! isset($this->aliases[(string)$abstract])

Или изменить явно type-hint на string во ВСЕХ функциях (@param string недостаточно) public function getAlias($abstract) за public function getAlias(string $abstract)

Но позже произойдет сбой при следующем использовании [$ abstract] в контейнере: isShared() at isset($this->instances[(string)$abstract]) isset($this->bindings[(string)$abstract] resolve() calling to$this->resolved[(string)$abstract] = true; getConcrete() at if (isset($this->bindings[(string)$abstract])) getContextualConcrete() at if (empty($this->abstractAliases[(string)$abstract])) getExtenders() at if (isset($this->extenders[(string)$abstract])) и в Освещение \ Фундамент \ Применение: make() at if (isset($this->deferredServices[(string)$abstract]) && ! isset($this->instances[(string)$abstract]))

PS: Пожалуйста, обратите внимание на комментарий Альваро Гонсалеса в php - Как исправить эту недопустимую ошибку типа смещения

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