无法通过引用返回php对象,然后访问它的方法

时间:2012-10-03 16:33:11

标签: php

我误解了php对象引用是如何工作的。据我所知,在php 5中,引用赋值对象是自动的。我理解引用赋值如何适用于非对象。

我想将对象实例的引用从方法传递给调用代码,然后使用实例引用调用该类的方法。

当我尝试这个时,我得到:

  

致命错误:调用成员函数update_Sessions_For_Schedule()   在......中的非对象上。

我已经阅读了一些类似的SO帖子,但我不能更清楚地找到为什么我无法做到这一点。

所以我拥有的是:

class Schedule使用类Time_Tabler进行检查,可以在允许创建新时间表之前将其添加到时间表中。很明显,在这个过程中,Time_Tabler被实例化了。

我想从实例化调度的php代码访问此实例,然后使用该实例调用方法update_Sessions_For_Schedule()。

所以我在课程表中有方法get_Checked_Time_Table(): -

我尝试过两种格式:

使用明确的引用分配:

public function &get_Checked_Time_Table(){
    global $test_Time_Tabler;
    return $test_Time_Tabler;
}

其中$ test_Time_Tabler在早期的类Schedule方法中实例化。

调用
    $tested_Time_Table =& $complete_Schedule->get_Checked_Time_Table();

没有明确的引用分配:

public function get_Checked_Time_Table(){
    global $test_Time_Tabler;
    return $test_Time_Tabler;
}

其中$ test_Time_Tabler在早期的类Schedule方法中实例化。

调用
$tested_Time_Table = $complete_Schedule->get_Checked_Time_Table();

在任何一种情况下

$tested_Time_Table->update_Sessions_For_Schedule($update_As_Insert);

产生致命错误。

我不明白为什么引用不被识别为类Time_Tabler的对象,因此可以调用该方法。

欢迎任何想法。

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。

解决问题的方法一如既往地简单明了。这个实例并没有持续存在,所以当我想再回顾它时它就不存在了。

因此,为了确保实例在引用时仍然存在,我做了一个克隆。