首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在接口上访问属性

问在接口上访问属性
EN

Stack Overflow用户
提问于 2015-06-11 07:16:14
回答 1查看 165关注 0票数 4

我用审查器来分析我的代码。几乎所有的事情都已经解决了,但我似乎无法解决这个问题。

代码语言:javascript
复制
Accessing id on the interface Illuminate\Contracts\Auth\Authenticatable suggest that you code against a concrete implementation. How about adding an instanceof check?

我看到了这个问题,因为它是一个不存在属性的接口,但是我的代码工作得很好。那么,当我分析我的代码时,如何才能让这些代码传递呢?

谢谢

编辑

得到这些行上的错误(以及其他一些文件几乎相同)

代码语言:javascript
复制
$this->tracert->log(
            'users',
            $this->auth->user()->id,
            $this->auth->user()->id,
            'Login'
        );

该类的构造函数

代码语言:javascript
复制
 /**
 * @param \Illuminate\Contracts\Auth\Guard $auth
 * @param \jorenvanhocht\Tracert\Tracert $tracert
 */
public function __construct(Guard $auth, Tracert $tracert)
{
    parent::__construct($auth);
    $this->tracert = $tracert;
}

基本控制器的构造函数:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-11 07:20:22

要解决经过身份验证的用户的id问题,您应该使用:

代码语言:javascript
复制
$this->auth->user()->getAuthIdentifier()

Interface由方法组成。您正在直接访问属性。例如$foo->id而不是$foo->getId()。当然,你必须给界面添加新的方法。

解决办法是对检查器说,$object是所需类的实例。

代码语言:javascript
复制
if ($object instanceof MyClass) {
    //
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30774076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档