由于从5.7更新到5.8,我再也无法解析实例了。它返回一个字符串,我得到Trying to get property of non-object
。
我将中间件中的实例绑定为:
$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对我们来说是不可替代的!
答案 0 :(得分:0)
在laravel 5.8中像这样的简单绑定请小心,将在服务提供商中注册,
$this->app->bind('App\Helpers\Globals', function () {
return new App\Helpers\Globals();
});
您可以使用品牌
$globals = $this->app->make('App\Helpers\Globals');
答案 1 :(得分:0)
这不是Laravel错误,而是与hoa / compiler(特别是hoa / stream)不兼容。
hoa / compiler是jms / serializer的依赖项。
因此,目前jms / serializer不能与Laravel 5.8配合使用