【问题标题】:Symfony - Call to a member function setFunction() on nullSymfony - 在 null 上调用成员函数 setFunction()
【发布时间】:2018-05-30 09:40:18
【问题描述】:

我编写了一个返回数据的代码,但我不断收到错误“调用 null 时的成员函数 setFunction()”...

我的服务..

public function enableNotification($user)
{
    $user->setNotification(1);

    $this->em->flush();
}

我的控制器..

   public function enableNotificationAction()
{
    $user = $this->getUser();

    $this->container->get('my.route')->enableNotification($user);

    return $this->success('', 'true');
}

【问题讨论】:

  • 在您的代码中没有您调用setFunction()的地方,请提供发生此错误的代码。
  • 对不起 setFunction 实际上是 enableNotification..
  • 考虑用实际的错误消息更新您的问题。如果它是 enableNotification 那么 my.route 不存在应该触发不同的错误。如果它是 setNotification 则意味着 $user 为空,这反过来意味着您没有登录。无论如何,拥有实际的错误消息可以减少相当多的猜测。

标签: php function symfony error-handling null


【解决方案1】:

它等同于 Java NullPointerException。我猜你有一个带有 setFunction() 方法的类,并且你的这个类的实例等于 null。

错误消息是说你不能这样做:

null->setFunction($varToSet);

尝试给出发生这种情况的代码

编辑:关于您对问题的最后评论,这意味着您的服务等于 null。您使用的是哪个版本的 symfony?

【讨论】:

  • 我在我的实体中定义了它 /** * @ORM\Column(name="system_notifications", type="smallint", options={"default" : 0}) * @Groups({ "user_data"}) */ private $notification = false;
  • 你的意思是setFunction其实就是setNotification吗?如果是这种情况,您从控制器中的 $this->getUser() 获得的用户为空。当您调用控制器操作时,您确定有登录用户吗?
  • 是的,就是这样!我已登录,所有其他功能都可以正常工作。我正在使用 Postman 来检查数据返回。
  • 然后你可以在调用你的服务之前检查你的用户值:dump($this->getUser());die;您可以查看它是否是带有它的用户实体实例,或者它是否为空。如果您使用 Postman 拨打电话,您也必须使用 Postman 登录您的用户
  • 我也试过了,但我没有运气。如果我找到解决方案,我会在这里发布。
【解决方案2】:

$this->container->get('my.route') 返回 null。 您的服务未实例化,因此可能未正确声明它,或者您的服务键中有错字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    • 2020-03-10
    • 2017-09-24
    • 2018-02-06
    • 2018-09-29
    相关资源
    最近更新 更多