2013-05-04 172 views
1

我想显示有关对象Activity的信息ListActivity中的函数getCurrent()应该返回。 当我尝试它,它完美的作品,我有类所需要的信息,但是,我有此错误信息页面的顶部: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

线在这里:

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

当isset失败时,getCurrent()会返回什么结果? 'NULL'?这不是一个对象。 – bwoebi 2013-05-04 17:37:36

+0

@bwoebi它会返回一些内容,因为我看到有关页面中活动的信息。它绝对不会返回null。谢谢你的回复。 – R00t 2013-05-04 17:40:18

+0

尝试在echo之前尝试'var_dump()'$ current' ... – bwoebi 2013-05-04 17:43:23

回答

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”。确保你正在查看正确的代码并刷新正确的页面。

+0

谢谢你的回复!我写了'$ current = new Activity',因为我认为问题就是这样。但是,好像getCurrect()正在返回对象(Activity)#7(4){[“id”:“Activity”:private] => string(3)“fir ... blablabla .. 。} ** NULL **''。 我想列表中的最后一个对象是空的,我是对不对? – R00t 2013-05-04 17:52:41

0

先设置$this->current$current = new Activity();(也许在constercture)

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

如果你使用$current = $listActivities->getCurrent()你失去了你的Activity对象,应该保存到另一个变量

你应该返回false

此处新代码:

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; 
    } 
+0

不错!有效。实际上,对于列表的最后一个对象,函数'getCurrent()'总是返回'null'。所以真正的问题是'while($ listActivities-> next())',它不应该调用实际的最后一个对象(或null)。 但是,谢谢你,你的帮助是非常感谢:) – R00t 2013-05-04 18:01:39

+0

@ R00t我很高兴为此:)祝你好运 – Cooper 2013-05-04 18:05:44

相关问题