在非对象上调用成员函数

时间:2013-05-04 17:36:15

标签: php

我希望显示有关对象Activity的信息,getCurrent()中的函数ListActivity应该返回。 当我尝试它,它完美地工作,我有类所需的信息,但是,我在页面顶部有这个错误消息:

  

致命错误:在a上调用成员函数getIdentifiant()   非对象   /Applications/XAMPP/xamppfiles/htdocs/site/prototype/administration.php   在第34行

第34行在这里:

  while($listActivities->next())
  {
     $current = new Activity();
     $current = $listActivities->getCurrent();
     echo $current->getId(); // line 34
  }

这是返回Activity对象的getCurrent()函数。

  public function getCurrent()
  {
     if(isset($this->activities[$this->current]))
        return $this->activities[$this->current];
  }

我不明白为什么我有这个问题,因为它返回了我想要的对象。 请帮我搞清楚。谢谢。

2 个答案:

答案 0 :(得分:0)

echo $current->getId(); // line 34
Fatal error: Call to a member function getIdentifiant() on a non-object in /Applications/XAMPP/xamppfiles/htdocs/site/prototype/administration.php on line 34

你认为发生了什么,或者你在页面中看到的是什么,如果错误说$ current不是一个对象,那就不是。它可能不是null,但它也可以是数组或任何不是对象的东西。

另外:

$current = new Activity();
$current = $listActivities->getCurrent();

对我来说没有意义。

使用

var_dump($listActivities->getCurrent());

要查看其确切返回的内容,并相信错误所说的内容。

编辑:你甚至可能没有看到正确的PHP脚本:错误说“getIdentifiant”而代码说“getId”。确保您正在查看正确的代码并刷新正确的页面。

答案 1 :(得分:0)

首先在$this->current之后设置$current = new Activity();(可能在结构中)

如果!isset($this->activities[$this->current])

,您应该返回false

如果您使用$current = $listActivities->getCurrent()丢失了Activity对象,则应将其另存为另一个变量

这里是新代码:

  while($listActivities->next())
  {
     $current = new Activity();
     if(  $listActivities->getCurrent() )
        echo $current->getId(); // line 34
  }


  public function getCurrent()
  {
     if(isset($this->activities[$this->current]))
        return $this->activities[$this->current];
     return false;
  }