CI 在接口上访问 属性
CI accessing property on interface
我正在使用 scrutinizer 来分析我的代码。几乎所有内容都已修复,但我似乎无法解决此问题。
Accessing id on the interface Illuminate\Contracts\Auth\Authenticatable suggest that you code against a concrete implementation. How about adding an instanceof check?
我看到了问题,因为它是一个 属性 不存在的接口,但我的代码工作正常。那我在分析我的代码的时候怎么才能让这段代码通过呢?
谢谢
编辑
在这些行上得到了错误(其他一些文件几乎相同)
$this->tracert->log(
'users',
$this->auth->user()->id,
$this->auth->user()->id,
'Login'
);
那个class
的构造函数
/**
* @param \Illuminate\Contracts\Auth\Guard $auth
* @param \jorenvanhocht\Tracert\Tracert $tracert
*/
public function __construct(Guard $auth, Tracert $tracert)
{
parent::__construct($auth);
$this->tracert = $tracert;
}
我的基本控制器的构造函数:
public function __construct(Guard $auth)
{
$this->auth = $auth;
$this->config = objectify(config('blogify'));
$this->auth_user = $this->auth->check() ? $this->auth->user() : false;
}
使用的合约https://github.com/illuminate/contracts/blob/master/Auth/Guard.php
要解决已验证用户的 ID 问题,您应该使用:
$this->auth->user()->getAuthIdentifier()
Interface 由方法组成。您正在直接访问属性。例如 $foo->id
而不是 $foo->getId()
。当然,您必须向界面添加新方法。
解决方法是告诉审查员,$object 是所需 class.
的实例
if ($object instanceof MyClass) {
//
}
我正在使用 scrutinizer 来分析我的代码。几乎所有内容都已修复,但我似乎无法解决此问题。
Accessing id on the interface Illuminate\Contracts\Auth\Authenticatable suggest that you code against a concrete implementation. How about adding an instanceof check?
我看到了问题,因为它是一个 属性 不存在的接口,但我的代码工作正常。那我在分析我的代码的时候怎么才能让这段代码通过呢?
谢谢
编辑
在这些行上得到了错误(其他一些文件几乎相同)
$this->tracert->log(
'users',
$this->auth->user()->id,
$this->auth->user()->id,
'Login'
);
那个class
的构造函数 /**
* @param \Illuminate\Contracts\Auth\Guard $auth
* @param \jorenvanhocht\Tracert\Tracert $tracert
*/
public function __construct(Guard $auth, Tracert $tracert)
{
parent::__construct($auth);
$this->tracert = $tracert;
}
我的基本控制器的构造函数:
public function __construct(Guard $auth)
{
$this->auth = $auth;
$this->config = objectify(config('blogify'));
$this->auth_user = $this->auth->check() ? $this->auth->user() : false;
}
使用的合约https://github.com/illuminate/contracts/blob/master/Auth/Guard.php
要解决已验证用户的 ID 问题,您应该使用:
$this->auth->user()->getAuthIdentifier()
Interface 由方法组成。您正在直接访问属性。例如 $foo->id
而不是 $foo->getId()
。当然,您必须向界面添加新方法。
解决方法是告诉审查员,$object 是所需 class.
的实例if ($object instanceof MyClass) {
//
}