试图获取非对象的属性“主机名”

Posted

技术标签:

【中文标题】试图获取非对象的属性“主机名”【英文标题】:Trying to get property 'hostname' of non-object 【发布时间】:2020-01-17 10:12:46 【问题描述】:

当我使用 php artisan api:routes 时,我收到以下错误:

试图获取非对象的属性“hostname_id”

我有以下代码,这个错误在哪里:

protected $user;
protected $hostname_id;

public function __construct() 
    $this->user = JWTAuth::user();
    $this->hostname_id = $this->user->hostname_id;
   

我读到了 JWTAuth::user() 返回 null 的内容,因此我无法获取 hostname_id。也许是另一种从 JWT 令牌接收登录用户数据的方式?

【问题讨论】:

嗯,您的错误与您的代码不匹配;它说“[...] 属性 hostname”,但您正在尝试访问 hostname_id。这是一个错字还是发生在其他地方? 对不起,我有两个控制器,另一个是相同的代码,但带有$this->user->hostname 我解决了,谢谢 没问题!解决方案可能与$this->usernull 相同,因此您无法访问属性->example,因此要么在尝试访问之前检查null,要么回退。干杯! 【参考方案1】:

发生错误是因为当你运行 php artisan api:route 它是调用所有控制器 __constract() 函数你可以使用这个代码

protected $user;
protected $hostname_id;

public function __construct() 
    $this->user = JWTAuth::user();
    $this->hostname_id = $this->user->hostname_id ?? null;

【讨论】:

谢谢,我明白了!

以上是关于试图获取非对象的属性“主机名”的主要内容,如果未能解决你的问题,请参考以下文章

通过主机名来获取一个ip对象

Linux 上的 Python:在 /etc/hostname 中获取主机名

获取本地设备的主机名和ip地址

AIX如何获取主机名

从 URL 获取域名/主机名的最快方法是啥?

怎么更改主机名