Laravel 5.8 - Не удается разрешить экземпляр из сервисного контейнера после обновления с 5.7 до 5.8. - PullRequest
3 голосов
/ 12 апреля 2019
  • Laravel Версия: 5.8.11
  • Версия PHP: 7.1.26 (Homestead) - но также протестирована с 7.2 с тем же результатом

С момента обновления с 5.7 до5.8, я не могу разрешить экземпляр больше.Он возвращает строку, и я получаю Trying to get property of non-object.

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

Я связываю экземпляр в Middleware с:

$globals = new Globals();
app()->instance('App\Helpers\Globals', $globals);
$globals->brows_browser = Agent::browser();

при попытке разрешить егопозже (например, в web.php) с:

$browser = resolve('App\Helpers\Globals')->brows_browser;

Я получаю исключение ошибки Trying to get property of non-object.$ browser - это строка «Helpers \ Globals», а не объект.Раньше все работало нормально во всех версиях Laravel.

namespace App\Helpers;

class Globals
{
    public $brows_browser;
    public $brows_device;
    public $brows_platform;
    public $brows_version;
}

Я также пытался привязать экземпляр к маршруту (web.php), и он дал тот же результат.

Когда я смотрю наresolve('App\Helpers\Globals'), это строка "App \ Helpers \ Globals", а не объект.

Кто-нибудь есть идеи?Может ли это быть ошибкой в ​​L5.8?

спасибо

ОБНОВЛЕНИЕ:

Это не ошибка.У меня goetas-webservices/xsd2php-runtime установлен с композитором, и это вызывает проблемы.Я действительно понятия не имею, почему и что с этим делать.

Это установленные зависимости.Я немного тупик, так как мне нужен этот пакет:

Package operations: 17 installs, 0 updates, 0 removals
  - Installing jms/metadata (2.0.0): Loading from cache
  - Installing hoa/exception (1.17.01.16): Loading from cache
  - Installing hoa/event (1.17.01.13): Loading from cache
  - Installing hoa/consistency (1.17.05.02): Loading from cache
  - Installing hoa/zformat (1.17.01.10): Loading from cache
  - Installing hoa/protocol (1.17.01.14): Loading from cache
  - Installing hoa/iterator (2.17.01.10): Loading from cache
  - Installing hoa/visitor (2.17.01.16): Loading from cache
  - Installing hoa/ustring (4.17.01.16): Loading from cache
  - Installing hoa/compiler (3.17.08.08): Loading from cache
  - Installing hoa/regex (1.17.01.13): Loading from cache
  - Installing hoa/math (1.17.05.16): Loading from cache
  - Installing hoa/stream (1.17.02.21): Loading from cache
  - Installing hoa/file (1.17.07.11): Loading from cache
  - Installing doctrine/annotations (v1.6.1): Loading from cache
  - Installing jms/serializer (2.2.0): Loading from cache
  - Installing goetas-webservices/xsd2php-runtime (v0.2.9): Loading from cache
jms/serializer suggests installing doctrine/collections (Required if you like to use doctrine collection types as ArrayCollection.)
Writing lock file

ОБНОВЛЕНИЕ 2:

Я углубился вниз, и кажется, что hoa / compiler (особенно hoa / stream)несовместим с Laravel 5.8

hoa / compiler - это зависимость от jms / serializer.

Это действительно отстой, потому что jms / serializer для нас незаменим!

Ответы [ 2 ]

0 голосов
/ 27 апреля 2019

Это не ошибка Laravel, а несовместимость с hoa / compiler (в частности, hoa / stream).

hoa / compiler является зависимостью от jms / serializer.

Итак, на данный момент jms/ сериализатор не будет хорошо играть с Laravel 5.8

0 голосов
/ 12 апреля 2019

Простое связывание, подобное этому, в laravel 5.8, будьте осторожны, будет зарегистрировано у поставщиков услуг,

$this->app->bind('App\Helpers\Globals', function () {
   return new App\Helpers\Globals();
});

Вы можете использовать марку

$globals = $this->app->make('App\Helpers\Globals');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...